Replace macr2lst by macr2tree in head_comments. 27/16627/2
Vincent COUVERT [Thu, 11 Jun 2015 08:15:58 +0000 (10:15 +0200)]
Tests:
test_run functions bug_2987
test_run functions bug_13093

Change-Id: Iceecd6a2ec9f8616d0564736980c3c30f98b2dff

scilab/modules/functions/macros/head_comments.sci
scilab/modules/functions/tests/nonreg_tests/bug_2987.dia.ref
scilab/modules/functions/tests/nonreg_tests/bug_2987.tst

index e257b9f..5d94f99 100644 (file)
@@ -22,17 +22,28 @@ function head_comments(name, %paths)
         error(msprintf(gettext("%s: Undefined variable %s.\n"),"head_comments",name )),
     end
 
-    if type(var) == 11 then comp(var); end
-    if type(var) <> 13 then
+    if type(var) <> 11 then
         error(msprintf(gettext("%s: Wrong value for input argument #%d: Name of a Scilab function expected.\n"),"head_comments",1))
     end
-    ops = macr2lst(var);
-    syntax = "function ["+strcat(ops(2),",")+"] = "+name+"("+strcat(ops(3),",")+")";
+    t = macr2tree(var);
+    outputs = [];
+    for k=1:size(t.outputs)
+        outputs=[outputs,expression2code(t.outputs(k))]
+    end
+    inputs = [];
+    for k=1:size(t.inputs)
+        inputs=[inputs,expression2code(t.inputs(k))]
+    end
+    syntax = "function ["+strcat(outputs,",")+"] = "+name+"("+strcat(inputs,",")+")";
 
     comm = [];
-    k = 4; if ops(4) == "15" then k = k+1; end
-    while ops(k)(1)=="31" then
-        comm = [comm; ops(k)(2)];
+    statements = t.statements
+    k = 1;
+    if statements(1) == list("EOL") then
+        k = k+1;
+    end
+    while typeof(statements(k))=="comment" then
+        comm = [comm; statements(k).text];
         k = k+2;
     end
     if comm == [] then
index a0b5203..8a188ab 100644 (file)
@@ -4,11 +4,12 @@
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
+// <-- CLI SHELL MODE -->
 // <-- Non-regression test for bug 2987 -->
 //
 // <-- Bugzilla URL -->
 // http://bugzilla.scilab.org/show_bug.cgi?id=2987
-head_comments('sinc')
+head_comments("sinc")
 function [y] = sinc(x,fl)
                [  sin(x(i))/x(i) if x(i)~=0
  computes y(i)=[
index c11535d..8dde031 100644 (file)
@@ -12,4 +12,4 @@
 // <-- Bugzilla URL -->
 // http://bugzilla.scilab.org/show_bug.cgi?id=2987
 
-head_comments('sinc')
+head_comments("sinc")