matrix 1x1 declaration [var] as manage like var 39/15839/2
Antoine ELIAS [Wed, 21 Jan 2015 09:29:06 +0000 (10:29 +0100)]
Change-Id: I21a0d56b72f3f53f54902f9ab48aa7fac8238c90

scilab/modules/ast/src/cpp/ast/run_MatrixExp.cpp
scilab/modules/string/tests/unit_tests/evstr.dia.ref
scilab/modules/string/tests/unit_tests/evstr.tst

index 5d423a1..9f84eb3 100644 (file)
@@ -32,6 +32,18 @@ void RunVisitorT<T>::visitprivate(const MatrixExp &e)
             return;
         }
 
+        //special case for 1x1 matrix
+        if (lines.size() == 1)
+        {
+            exps_t cols = lines[0]->getAs<MatrixLineExp>()->getColumns();
+            if (cols.size() == 1)
+            {
+                setResult(NULL); // Reset value on loop re-start
+                cols[0]->accept(*this);
+                return;
+            }
+        }
+
         //do all [x,x]
         for (row = lines.begin() ; row != lines.end() ; row++)
         {
index 531f540..47abc6d 100644 (file)
@@ -44,3 +44,6 @@ if execstr("evstr(toto)", "errcatch") == 0 then bugmes();quit;end
 s = rand(3,3,3);
 if execstr("evstr(s)", "errcatch") <> 0 then bugmes();quit;end
 // =============================================================================
+function foo(), endfunction
+if execstr("evstr(''foo'')", "errcatch") <> 0 then bugmes();quit;end
+// =============================================================================
index 7244a63..bdb241a 100644 (file)
@@ -44,3 +44,6 @@ if execstr("evstr(toto)", "errcatch") == 0 then pause, end
 s = rand(3,3,3);
 if execstr("evstr(s)", "errcatch") <> 0 then pause, end
 // =============================================================================
+function foo(), endfunction
+if execstr("evstr(''foo'')", "errcatch") <> 0 then pause, end
+// =============================================================================