[bug_14399] lines number fixed 27/19227/2
Cedric Delamarre [Fri, 24 Mar 2017 17:03:02 +0000 (18:03 +0100)]
Change-Id: Id57d80a17be326c6af100fb7110584240608e2bc

scilab/CHANGES.md
scilab/modules/ast/src/cpp/ast/debuggervisitor.cpp
scilab/modules/ast/src/cpp/ast/run_SeqExp.hpp
scilab/modules/ast/src/cpp/ast/runvisitor.cpp
scilab/modules/ast/tests/nonreg_tests/bug_14399.tst [new file with mode: 0644]
scilab/modules/core/sci_gateway/cpp/sci_pause.cpp

index 8aec9a6..a37fd09 100644 (file)
@@ -348,6 +348,7 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#12771](http://bugzilla.scilab.org/show_bug.cgi?id=12771): xcosPalGenerateAllIcons help example was broken
 * [#13592](http://bugzilla.scilab.org/show_bug.cgi?id=13592): In an axes in a uicontrol frame, setting a `legend` interactively might not follow the mouse accurately.
 * [#14376](http://bugzilla.scilab.org/show_bug.cgi?id=14376): input() is broken: \n introduced before prompting, multiple prompts, missing assignment, "%" "\n" "\t" no longer supported in messages...
+* [#14399](http://bugzilla.scilab.org/show_bug.cgi?id=14399): Whereami : wrong information (line numbers).
 * [#14424](http://bugzilla.scilab.org/show_bug.cgi?id=14424): New problem with the input function.
 * [#14636](http://bugzilla.scilab.org/show_bug.cgi?id=14636): Xcos model with modelica electrical blocks (created in 5.5.2) crashed Scilab 6.
 * [#14637](http://bugzilla.scilab.org/show_bug.cgi?id=14367): Some Scilab 5.5.2 diagrams didn't simulate properly in Xcos.
@@ -711,4 +712,3 @@ the [development mailing list](dev@lists.scilab.org) for a particular toolbox.
 * [#14685](http://bugzilla.scilab.org/show_bug.cgi?id=14685): datavec produced an invalid index error.
 * [#14980] (http://bugzilla.scilab.org/show_bug.cgi?id=14980): The datatip display of the root locus arcs is broken.
 * [#14992] (http://bugzilla.scilab.org/show_bug.cgi?id=14992): `readgateway` has been removed, use `whereis` instead.
-
index 3db5a3c..d38497c 100644 (file)
@@ -208,7 +208,7 @@ void DebuggerVisitor::visit(const SeqExp  &e)
                         int iSaveExpectedSize = getExpectedSize();
                         setExpectedSize(1);
 
-                        pCall->invoke(in, opt, getExpectedSize(), out, e);
+                        pCall->invoke(in, opt, getExpectedSize(), out, *exp);
                         setExpectedSize(iSaveExpectedSize);
 
                         if (out.size() == 0)
@@ -312,4 +312,3 @@ void DebuggerVisitor::visit(const SeqExp  &e)
     }
 }
 }
-
index 5378e60..1af4664 100644 (file)
@@ -143,7 +143,7 @@ void RunVisitorT<T>::visitprivate(const SeqExp  &e)
                         int iSaveExpectedSize = getExpectedSize();
                         setExpectedSize(1);
 
-                        pCall->invoke(in, opt, getExpectedSize(), out, e);
+                        pCall->invoke(in, opt, getExpectedSize(), out, **it);
                         setExpectedSize(iSaveExpectedSize);
 
                         if (out.size() == 0)
index b5a687a..e7f51a7 100644 (file)
@@ -912,6 +912,7 @@ void RunVisitorT<T>::visitprivate(const ReturnExp &e)
 
             //return or resume
             ConfigVariable::DecreasePauseLevel();
+            ConfigVariable::macroFirstLine_end();
             CoverageInstance::stopChrono((void*)&e);
             return;
         }
diff --git a/scilab/modules/ast/tests/nonreg_tests/bug_14399.tst b/scilab/modules/ast/tests/nonreg_tests/bug_14399.tst
new file mode 100644 (file)
index 0000000..42820ac
--- /dev/null
@@ -0,0 +1,43 @@
+// ============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2017 - Scilab Enterprises - Cedric Delamarre
+//
+//  This file is distributed under the same license as the Scilab package.
+// ============================================================================
+// <-- INTERACTIVE TEST -->
+// <-- CLI SHELL MODE -->
+// <-- Non-regression test for bug 14399 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14399
+//
+// <-- Short Description -->
+// Whereami : wrong information (line numbers)
+function F1(a, b, c)
+  x1 = 1;
+  x2 = 1;
+  x3 = 1;
+  pause;
+  y1 = 3;
+endfunction
+
+function F()
+  z = 1;
+  F1(1,2,3);
+endfunction
+
+F();
+
+// call where in pause
+[l, f]=where()
+// lines number must be 0 5 3
+
+// call F() then where
+F()
+[l, f]=where()
+// lines number must be 0 5 3 0 5 3
+
+// call resume then where
+resume
+[l, f]=where()
+// lines number must be 0 5 3
index 4d4dfa5..269f3ed 100644 (file)
@@ -45,6 +45,11 @@ types::Function::ReturnValue sci_pause(types::typed_list &in, int _iRetCount, ty
 
     ConfigVariable::IncreasePauseLevel();
 
+    // add pause in list of macro called
+    // to manage line displayed when error occured
+    // or when the "where()" function is called.
+    ConfigVariable::macroFirstLine_begin(2);
+
     // unlock console thread to display prompt again
     ThreadManagement::SendConsoleExecDoneSignal();