* Bug 7641 fixed: int8(1):uint8(4) was not parsed as int8(1):1:uint8(4) 54/19954/4
Samuel GOUGEON [Sun, 15 Apr 2018 14:30:14 +0000 (16:30 +0200)]
 - fix trouble in deserialization of implicitlist ( always implicit step )

  http://bugzilla.scilab.org/7641

  The test passes when executed with exec(), but strangely yields a
  "recursion limit" error for i=1,j=2 (int8:int16) with
  test_run integer bug_7641 show_error

Change-Id: I74a21fa1c1c6b01da1ba147789c06d6bc17cfb4e

scilab/CHANGES.md
scilab/modules/ast/includes/ast/deserializervisitor.hxx
scilab/modules/integer/macros/%i_b_i.sci [new file with mode: 0644]
scilab/modules/integer/tests/nonreg_tests/bug_7641.tst [new file with mode: 0644]

index 6a076b7..88219bf 100644 (file)
@@ -396,6 +396,7 @@ Known issues
 * [#6729](http://bugzilla.scilab.org/show_bug.cgi?id=6729): The compatibility functions `mtlb_int8`, `mtlb_int16`, `mtlb_int32`, `mtlb_uint8`, `mtlb_uint16` and `mtlb_uint32` were not actually Matlab-like. Their documentation was neither correct nor up-to-date. `mtlb_int64` and `mtlb_int64` were missing.
 * [#6939](http://bugzilla.scilab.org/show_bug.cgi?id=6939): `nearfloat("succ",rand(2,2,2))` returned a (2,2) matrix with no error.
 * [#7277](http://bugzilla.scilab.org/show_bug.cgi?id=7277): SciNotes `File>Open recent` menu was not updated after 5 items were added.
+* [#7641](http://bugzilla.scilab.org/show_bug.cgi?id=7641): `uint8(1):uint16(4)` produced an error instead of being parsed as `uint8(1):1:uint16(4)`, that passes.
 * [#7675](http://bugzilla.scilab.org/show_bug.cgi?id=7675): sparse() got a wrong result, when creation with many values in same position.
 * [#8000](http://bugzilla.scilab.org/show_bug.cgi?id=8000): fixed   - `get(gcf(), "%s %s %s..")` crashed Scilab.
 * [#8127](http://bugzilla.scilab.org/show_bug.cgi?id=8127): When using `ode()`, some internal errors messages were in french.
index fecc008..f87e457 100644 (file)
@@ -471,7 +471,7 @@ private :
                 Exp* _start = get_exp();
                 Exp* _step = get_exp();
                 Exp* _end = get_exp();
-                exp = new ListExp(loc, *_start, *_step, *_end);
+                exp = new ListExp(loc, *_start, *_step, *_end, true);
                 break;
             }
             case 31:
diff --git a/scilab/modules/integer/macros/%i_b_i.sci b/scilab/modules/integer/macros/%i_b_i.sci
new file mode 100644 (file)
index 0000000..62777c4
--- /dev/null
@@ -0,0 +1,13 @@
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - Samuel GOUGEON
+//
+// This file is hereby licensed under the terms of the GNU GPL v2.0,
+// pursuant to article 5.3.4 of the CeCILL v.2.1.
+// This file was originally licensed under the terms of the CeCILL v2.1,
+// and continues to be available under such terms.
+// For more information, see the COPYING file which you should have received
+// along with this program.
+
+function r = %i_b_i(a, b)
+    r = a:1:b
+endfunction
diff --git a/scilab/modules/integer/tests/nonreg_tests/bug_7641.tst b/scilab/modules/integer/tests/nonreg_tests/bug_7641.tst
new file mode 100644 (file)
index 0000000..a85e37e
--- /dev/null
@@ -0,0 +1,25 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2018 - Samuel GOUGEON
+//
+//  This file is distributed under the same license as the Scilab package.
+// ===========================================================================
+//
+// <-- Non-regression test for bug 7641 -->
+//
+// <-- CLI SHELL MODE -->
+// <-- NO CHECK REF -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/7641
+//
+// <-- Short Description -->
+// `uint8(1):uint16(4)` produced an error instead of being parsed as
+// `uint8(1):1:uint16(4)`, that passes.
+
+b = [1 2 4 8 11 12 14 18];
+for i = b
+    for j = b
+        assert_checkequal(iconvert(1,i):iconvert(4,j), iconvert(1:4,i));
+    end
+end