* Bug #14361 fixed - Parser did not manage linebreak + blockcomment "... /* a comment */"
[scilab.git] / scilab / modules / ast / tests / unit_tests / parser.tst
index b4f5dce..2fbb385 100644 (file)
@@ -357,4 +357,379 @@ a = [[2 3]  >= ... // a comment
  -3];
 assert_checkequal(a, expected);
 
+// bug_14361
 
+a=[1; .../* a comment */
+-2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment */
+-2];
+assert_checkequal(a,  colvect);
+a=[1; .../* a comment */
+ -2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment */
+ -2];
+assert_checkequal(a,  colvect);
+a=[1; .../* a comment */
+- 2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment */
+- 2];
+assert_checkequal(a,  colvect);
+
+a=[1 .../* a comment */
+-2];
+assert_checkequal(a,  linevect);
+a=[1.../* a comment */
+-2];
+assert_checkequal(a,  -1);
+a=[1 .../* a comment */
+ -2];
+assert_checkequal(a,  linevect);
+a=[1.../* a comment */
+ -2];
+assert_checkequal(a,  linevect);
+a=[1 .../* a comment */
+- 2];
+assert_checkequal(a,  -1);
+a=[1.../* a comment */
+- 2];
+assert_checkequal(a,  -1);
+
+// Operators within matrices
+// DOTTIMES
+a = [[2 3] .* ... /* a comment */
+-3];
+expected = [-6 -9];
+assert_checkequal(a, expected);
+
+//DOTRDIVIDE
+
+a = [[2 3] ./ ... /* a comment */
+-3];
+expected = [-2/3 -1];
+assert_checkequal(a, expected);
+
+//DOTLDIVIDE
+a = [[2 3] .\ ... /* a comment */
+-3];
+expected = [-3/2 -1];
+assert_checkequal(a, expected);
+
+//DOTPOWER
+a = [[2 3] .^ ... /* a comment */
+-3];
+expected = [(2^(-3)), (3^(-3))];
+assert_checkequal(a, expected);
+
+//MINUS
+a = [[2 3] - ... /* a comment */
+-3];
+expected = [(2-(-3)), (3-(-3))];
+assert_checkequal(a, expected);
+
+//PLUS
+a = [[2 3] + ... /* a comment */
+-3];
+expected = [(2+(-3)), (3+(-3))];
+assert_checkequal(a, expected);
+
+//TIMES
+a = [2  * ... /* a comment */
+ -3];
+expected = [(2*(-3))];
+assert_checkequal(a, expected);
+
+//RDIVIDE
+a = [2  / ... /* a comment */
+ -3];
+expected = [(2/(-3))];
+assert_checkequal(a, expected);
+
+//LDIVIDE
+a = [2  \ ... /* a comment */
+ -3];
+expected = [(2\(-3))];
+assert_checkequal(a, expected);
+
+//POWER
+a = [2  ^ ... /* a comment */
+ -3];
+expected = [(2^(-3))];
+assert_checkequal(a, expected);
+
+//KRONTIMES
+a = [[2 3] .*. ... /* a comment */
+ -3];
+expected = [([2, 3].*.(-3))];
+assert_checkequal(a, expected);
+
+//kronrdivide
+a = [[2 3] ./. ... /* a comment */
+ -3];
+expected = [([2, 3]./.(-3))];
+assert_checkequal(a, expected);
+
+//KRONLDIVIDE
+a = [[2 3] .\. ... /* a comment */
+ -3];
+expected = [([2, 3].\.(-3))];
+assert_checkequal(a, expected);
+
+//EQ
+a = [[2 3] == ... /* a comment */
+ -3];
+expected = [([2, 3]==(-3))];
+assert_checkequal(a, expected);
+
+//NE
+a = [[2 3]  ~= ... /* a comment */
+ -3];
+expected = [([2, 3]~=(-3))];
+assert_checkequal(a, expected);
+
+//LT
+a = [[2 3]  < ... /* a comment */
+ -3];
+expected = [([2, 3]<(-3))];
+assert_checkequal(a, expected);
+
+//GT
+a = [[2 3]  > ... /* a comment */
+ -3];
+expected = [([2, 3]>(-3))];
+assert_checkequal(a, expected);
+
+//LE
+a = [[2 3]  <= ... /* a comment */
+ -3];
+expected = [([2, 3]<=(-3))];
+assert_checkequal(a, expected);
+
+//GE
+a = [[2 3]  >= ... /* a comment */
+ -3];
+expected = [([2, 3]>=(-3))];
+assert_checkequal(a, expected);
+
+// Comments on several lines
+a=[1; .../* a comment 
+ on several lines */
+-2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment 
+ on several lines */
+-2];
+assert_checkequal(a,  colvect);
+a=[1; .../* a comment 
+ on several lines */
+ -2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment 
+ on several lines */
+ -2];
+assert_checkequal(a,  colvect);
+a=[1; .../* a comment 
+ on several lines */
+- 2];
+assert_checkequal(a,  colvect);
+a=[1;.../* a comment 
+ on several lines */
+- 2];
+assert_checkequal(a,  colvect);
+
+a=[1 .../* a comment 
+ on several lines */
+-2];
+assert_checkequal(a,  linevect);
+a=[1.../* a comment 
+ on several lines */
+-2];
+assert_checkequal(a,  -1);
+a=[1 .../* a comment 
+ on several lines */
+ -2];
+assert_checkequal(a,  linevect);
+a=[1.../* a comment 
+ on several lines */
+ -2];
+assert_checkequal(a,  linevect);
+a=[1 .../* a comment 
+ on several lines */
+- 2];
+assert_checkequal(a,  -1);
+a=[1.../* a comment 
+ on several lines */
+- 2];
+assert_checkequal(a,  -1);
+
+// Operators within matrices
+// DOTTIMES
+a = [[2 3] .* ... /* a comment 
+ on several lines */
+-3];
+expected = [-6 -9];
+assert_checkequal(a, expected);
+
+//DOTRDIVIDE
+a = [[2 3] ./ ... /* a comment 
+ on several lines */
+-3];
+expected = [-2/3 -1];
+assert_checkequal(a, expected);
+
+//DOTLDIVIDE
+a = [[2 3] .\ ... /* a comment 
+ on several lines */
+-3];
+expected = [-3/2 -1];
+assert_checkequal(a, expected);
+
+//DOTPOWER
+a = [[2 3] .^ ... /* a comment 
+ on several lines */
+-3];
+expected = [(2^(-3)), (3^(-3))];
+assert_checkequal(a, expected);
+
+//MINUS
+a = [[2 3] - ... /* a comment 
+ on several lines */
+-3];
+expected = [(2-(-3)), (3-(-3))];
+assert_checkequal(a, expected);
+
+//PLUS
+a = [[2 3] + ... /* a comment 
+ on several lines */
+-3];
+expected = [(2+(-3)), (3+(-3))];
+assert_checkequal(a, expected);
+
+//TIMES
+a = [2  * ... /* a comment 
+ on several lines */
+ -3];
+expected = [(2*(-3))];
+assert_checkequal(a, expected);
+
+//RDIVIDE
+a = [2  / ... /* a comment 
+ on several lines */
+ -3];
+expected = [(2/(-3))];
+assert_checkequal(a, expected);
+
+//LDIVIDE
+a = [2  \ ... /* a comment 
+ on several lines */
+ -3];
+expected = [(2\(-3))];
+assert_checkequal(a, expected);
+
+//POWER
+a = [2  ^ ... /* a comment 
+ on several lines */
+ -3];
+expected = [(2^(-3))];
+assert_checkequal(a, expected);
+
+//KRONTIMES
+a = [[2 3] .*. ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3].*.(-3))];
+assert_checkequal(a, expected);
+
+//KRONRDIVIDE
+a = [[2 3] ./. ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]./.(-3))];
+assert_checkequal(a, expected);
+
+//KRONLDIVIDE
+a = [[2 3] .\. ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3].\.(-3))];
+assert_checkequal(a, expected);
+
+//EQ
+a = [[2 3] == ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]==(-3))];
+assert_checkequal(a, expected);
+
+//NE
+a = [[2 3]  ~= ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]~=(-3))];
+assert_checkequal(a, expected);
+
+//LT
+a = [[2 3]  < ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]<(-3))];
+assert_checkequal(a, expected);
+
+//GT
+a = [[2 3]  > ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]>(-3))];
+assert_checkequal(a, expected);
+
+//LE
+a = [[2 3]  <= ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]<=(-3))];
+assert_checkequal(a, expected);
+
+//GE
+a = [[2 3]  >= ... /* a comment 
+ on several lines */
+ -3];
+expected = [([2, 3]>=(-3))];
+assert_checkequal(a, expected);
+
+// Special behaviour of ... with + and -
+a = [1 +...
+2]
+expected = 3;
+assert_checkequal(a, expected);
+
+a = [1 +...
+ 2]
+expected = 3;
+assert_checkequal(a, expected);
+
+a = [1 +...
+ +2]
+expected = 3;
+assert_checkequal(a, expected);
+
+a = [1 -...
+2]
+expected = -1;
+assert_checkequal(a, expected);
+
+a = [1 -...
+ 2]
+expected = -1;
+assert_checkequal(a, expected);
+
+a = [1 -...
+ -2]
+expected = 3;
+assert_checkequal(a, expected);
+
+// Case with multiline comment
+str_cmd = ["a = [1 -... /* the start of a";
+          "multiline comment */ 2 3]"]; // this currently generates an error
+assert_checktrue(execstr(str_cmd, "errcatch") <> 0);