changeset 10030:83bb2a78c07d

improve simple assignments error checks and messages
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 26 Dec 2009 14:07:50 +0100
parents 3b2f81d5a6dc
children 8db5553c24f5
files src/ChangeLog src/gripes.cc src/gripes.h src/ov-cell.cc src/ov-struct.cc src/pt-assign.cc
diffstat 6 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/ChangeLog	Sat Dec 26 14:07:50 2009 +0100
@@ -1,3 +1,12 @@
+2009-12-26  Jaroslav Hajek  <highegg@gmail.com>
+
+	* gripes.cc (gripe_nonbraced_cs_list_assignment): New function.
+	* gripes.h: Declare it.
+	* ov-cell.cc (octave_cell::subsasgn): Use it here.
+	* ov-struct.cc (octave_struct::subsasgn): Also here.
+	* pt-idx.cc (tree_simple_assignment::rvalue1): And here. Check for
+	single lhs value.
+
 2009-12-25  Jaroslav Hajek  <highegg@gmail.com>
 
 	* ov-str-mat.h (octave_char_matrix_str::is_matrix_type): Remove
--- a/src/gripes.cc	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/gripes.cc	Sat Dec 26 14:07:50 2009 +0100
@@ -272,6 +272,12 @@
 }
 
 void
+gripe_nonbraced_cs_list_assignment (void)
+{
+  error ("invalid assignment to cs-list outside multiple assignment.");
+}
+
+void
 gripe_warn_complex_cmp (void)
 {
   warning_with_id ("Octave:matlab-incompatible",
--- a/src/gripes.h	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/gripes.h	Sat Dec 26 14:07:50 2009 +0100
@@ -139,6 +139,9 @@
 gripe_indexed_cs_list (void);
 
 extern OCTINTERP_API void
+gripe_nonbraced_cs_list_assignment (void);
+
+extern OCTINTERP_API void
 gripe_warn_complex_cmp (void);
 
 #endif
--- a/src/ov-cell.cc	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/ov-cell.cc	Sat Dec 26 14:07:50 2009 +0100
@@ -359,7 +359,7 @@
               // Regularize a null matrix if stored into a cell.
               octave_base_matrix<Cell>::assign (idxf, Cell (t_rhs.storable_value ()));
             else if (! error_state)
-              error ("invalid assignment to cs-list outside multiple assignment.");
+              gripe_nonbraced_cs_list_assignment ();
 
 	    if (! error_state)
 	      {
--- a/src/ov-struct.cc	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/ov-struct.cc	Sat Dec 26 14:07:50 2009 +0100
@@ -448,7 +448,7 @@
                               gripe_failed_assignment ();
                           }
                         else if (! error_state)
-                          error ("invalid assignment to cs-list outside multiple assignment.");
+                          gripe_nonbraced_cs_list_assignment ();
                       }
 		  }
 		else
--- a/src/pt-assign.cc	Sat Dec 26 00:07:01 2009 -0500
+++ b/src/pt-assign.cc	Sat Dec 26 14:07:50 2009 +0100
@@ -30,6 +30,7 @@
 
 #include "defun.h"
 #include "error.h"
+#include "gripes.h"
 #include "input.h"
 #include "oct-obj.h"
 #include "oct-lvalue.h"
@@ -228,6 +229,9 @@
 
 	      octave_lvalue ult = lhs->lvalue ();
 
+              if (ult.numel () != 1)
+                gripe_nonbraced_cs_list_assignment ();
+
 	      if (! error_state)
 		{
 		  ult.assign (etype, rhs_val);