# HG changeset patch # User Jaroslav Hajek # Date 1261832870 -3600 # Node ID 83bb2a78c07d28f30553351c62c52bba6bf48efa # Parent 3b2f81d5a6dcefa419a1b88b566871dc9454145f improve simple assignments error checks and messages diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2009-12-26 Jaroslav Hajek + + * 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 * ov-str-mat.h (octave_char_matrix_str::is_matrix_type): Remove diff --git a/src/gripes.cc b/src/gripes.cc --- a/src/gripes.cc +++ b/src/gripes.cc @@ -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", diff --git a/src/gripes.h b/src/gripes.h --- a/src/gripes.h +++ b/src/gripes.h @@ -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 diff --git a/src/ov-cell.cc b/src/ov-cell.cc --- a/src/ov-cell.cc +++ b/src/ov-cell.cc @@ -359,7 +359,7 @@ // Regularize a null matrix if stored into a cell. octave_base_matrix::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) { diff --git a/src/ov-struct.cc b/src/ov-struct.cc --- a/src/ov-struct.cc +++ b/src/ov-struct.cc @@ -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 diff --git a/src/pt-assign.cc b/src/pt-assign.cc --- a/src/pt-assign.cc +++ b/src/pt-assign.cc @@ -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);