Revert "insertion of [] in struct may used to delete entire row or col. fix some... 25/16925/2
Antoine ELIAS [Wed, 29 Jul 2015 12:38:31 +0000 (14:38 +0200)]
This reverts commit 6bede4a5476297c4028368d269e35155bc4903e9.

Change-Id: Ifc2b5170d32ff947572e8049bb5d0b9ee6ef55f9

scilab/modules/ast/src/cpp/ast/visitor_common.cpp
scilab/modules/overloading/tests/nonreg_tests/bug_2267.dia.ref
scilab/modules/overloading/tests/nonreg_tests/bug_2267.tst
scilab/modules/overloading/tests/nonreg_tests/bug_7042.dia.ref
scilab/modules/overloading/tests/nonreg_tests/bug_7042.tst

index 127c21b..829cc33 100644 (file)
@@ -1700,7 +1700,7 @@ InternalType* insertionCall(const ast::Exp& e, typed_list* _pArgs, InternalType*
         // l(x) = [] when l is not defined => create l = []
         pOut = Double::Empty();
     }
-    else if (_pInsert->isDouble() && _pInsert->getAs<Double>()->isEmpty() && _pVar->isList() == false)
+    else if (_pInsert->isDouble() && _pInsert->getAs<Double>()->isEmpty() && _pVar->isStruct() == false && _pVar->isList() == false)
     {
         //insert [] so deletion except for Struct and List which can insert []
         InternalType::ScilabType varType = _pVar->getType();
@@ -1783,7 +1783,7 @@ InternalType* insertionCall(const ast::Exp& e, typed_list* _pArgs, InternalType*
             }
             case InternalType::ScilabStruct :
             {
-                pOut = _pVar->getAs<Struct>()->remove(_pArgs);
+                pOut = _pVar->getAs<Struct>()->insert(_pArgs, _pInsert);
                 break;
             }
             case InternalType::ScilabHandle :
index 16727a8..8899f47 100644 (file)
 // <-- Short Description -->
 // Wrong error message when ticks locations and labels have not the same sizes
 clf(); plot2d(); a=gca();
-errmsg1=msprintf(_("Ticks location and label vectors must have the same size.\n"));
+errmsg1=msprintf(_("%s: Incompatible sizes for properties ''%s'' and ''%s'': Same sizes expected.\n"), "generic_i_h", "x_ticks.locations", "x_ticks.labels");
 execstr("a.x_ticks.locations=0:2:6","errcatch"); //assert_checkerror does not catch the error here
 assert_checkequal(lasterror(), errmsg1);
 execstr("a.x_ticks.labels=string([0:2:6])", "errcatch");
 assert_checkequal(lasterror(), errmsg1);
+errmsg2=msprintf(_("%s: Incompatible sizes for properties ''%s'' and ''%s'': Same sizes expected.\n"), "generic_i_h", "y_ticks.locations", "y_ticks.labels");
 execstr("a.y_ticks.locations=-2:1:2", "errcatch");
-assert_checkequal(lasterror(), errmsg1);
+assert_checkequal(lasterror(), errmsg2);
 execstr("a.y_ticks.labels=string([-2:1:2])", "errcatch");
-assert_checkequal(lasterror(), errmsg1);
+assert_checkequal(lasterror(), errmsg2);
 close
index 29e0699..d3f8cc6 100644 (file)
 // Wrong error message when ticks locations and labels have not the same sizes
 
 clf(); plot2d(); a=gca();
-errmsg1=msprintf(_("Ticks location and label vectors must have the same size.\n"));
+errmsg1=msprintf(_("%s: Incompatible sizes for properties ''%s'' and ''%s'': Same sizes expected.\n"), "generic_i_h", "x_ticks.locations", "x_ticks.labels");
 execstr("a.x_ticks.locations=0:2:6","errcatch"); //assert_checkerror does not catch the error here
 assert_checkequal(lasterror(), errmsg1);
 execstr("a.x_ticks.labels=string([0:2:6])", "errcatch");
 assert_checkequal(lasterror(), errmsg1);
+
+errmsg2=msprintf(_("%s: Incompatible sizes for properties ''%s'' and ''%s'': Same sizes expected.\n"), "generic_i_h", "y_ticks.locations", "y_ticks.labels");
 execstr("a.y_ticks.locations=-2:1:2", "errcatch");
-assert_checkequal(lasterror(), errmsg1);
+assert_checkequal(lasterror(), errmsg2);
 execstr("a.y_ticks.labels=string([-2:1:2])", "errcatch");
-assert_checkequal(lasterror(), errmsg1);
+assert_checkequal(lasterror(), errmsg2);
 close
index 43dc437..1c21b14 100644 (file)
 // <-- CLI SHELL MODE -->
 //
 // <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=7042
+// http://bugzilla.scilab.org/show_bug.cgi?id= 7042
 //
 // <-- Short Description -->
 // insertion of an empty matrix into a struct (to remove a row or column)
 // is buggy when multiple index is used
-d11=struct("day",25,"month" ,"DEC","year",2006);
-d12=struct("day",2,"month" ,"DEC","year",2006);
-d21=struct("day",8,"month" ,"Feb","year",2010);
-d22=struct("day",12,"month" ,"Feb","year",2010);
+d11=struct('day',25,'month' ,'DEC','year',2006);
+d12=struct('day',2,'month' ,'DEC','year',2006);
+d21=struct('day',8,'month' ,'Feb','year',2010);
+d22=struct('day',12,'month' ,'Feb','year',2010);
 d=[d11 d12;d21 d22];
 dd=d;
 dd(1,:)=[];
index 8807562..b854268 100644 (file)
 // <-- CLI SHELL MODE -->
 //
 // <-- Bugzilla URL -->
-// http://bugzilla.scilab.org/show_bug.cgi?id=7042
+// http://bugzilla.scilab.org/show_bug.cgi?id= 7042
 //
 // <-- Short Description -->
 // insertion of an empty matrix into a struct (to remove a row or column)
 // is buggy when multiple index is used
-d11=struct("day",25,"month" ,"DEC","year",2006);
-d12=struct("day",2,"month" ,"DEC","year",2006);
-d21=struct("day",8,"month" ,"Feb","year",2010);
-d22=struct("day",12,"month" ,"Feb","year",2010);
+d11=struct('day',25,'month' ,'DEC','year',2006);
+d12=struct('day',2,'month' ,'DEC','year',2006);
+d21=struct('day',8,'month' ,'Feb','year',2010);
+d22=struct('day',12,'month' ,'Feb','year',2010);
 
 d=[d11 d12;d21 d22];