Hello,

After some tests, it seems that Scilab 5 loads in local context "sub functions" only when you call the main function.

with your sample, test1 and testa in the same test1.sci file
genlib -> load -> testa -> KO
               -> test1 -> testa -> OK

In Scilab 6, we load "sub functions" as nested functions of the main function. So they can be called in main function but after the call, they are "cleared".

It is a regression, can you open a bug with a link to this thread ?

Regards,
Antoine

Le 2017-02-22 02:50, Tan Chin Luh a écrit :
Hi Samuel,

 Thanks for your answers.

 best regards,
 Chin Luh

 On 22/2/2017 5:22 AM, Samuel Gougeon wrote:

Hi,

Le 16/02/2017 à 06:04, Tan Chin Luh a écrit :

Hi,

I am trying to troubleshoot the issue on the guibuilder in Scilab
6 windows platform as reported by :

https://atoms.scilab.org/toolboxes/guibuilder/3.1#comment2713 [1]

-----------

I used guibuilder in 5.5.2 and was able to create a gui, open an
existing gui. I just
installed it for 6.0 and the guibuilder launches, but am unable to
create anything, i
get the error "Undefined variable: draw_uicontrol5" for anything
that I click on
to
create. Or even to open an existing GUI.
-----------

I tried to reproduce the error in a simpler manner:

1. Write a simple sci file with 2 functions in it.

function y = test1(x)
y = x+1;
endfunction

function y = testa(x)
y = x+2;
endfunction

2. Put the file in a folder and use genlib to generate the lib

3. Load the library and call "test1(1)" and "testa(1)"

In Scilab 5.5.2, both functions are callable, but in Scilab 6,
only test1 is, and calling testa will either return error
"undefined variable" or just crashed the Scilab.

Is this meant to behave this way under "new parser and new core"?

AFAIK : yes.
Now, only the first function defined in the file (or the one whose
name matches the file name? To be tested) is public. All other ones
are private (their domain is unclear: (likely) only the main
function? or the whole library it belongs to? To be tested and
documented).
One of the (nice) consequences is that, now none of the private
functions appears in the whos list of defined functions. They were
formerly rather spamming the list.

I try to screen through what's news in Scilab 6 and bugzilla, and
the similar but not exact issue found is :
http://bugzilla.scilab.org/show_bug.cgi?id=14525 [2]

You are right, i don't think it is already correctly documented.
There were some discussions on users@ about this change since
mid-2015, but since Scilab 5.5.2, the genlib() help page was
improved for Scilab 5, without being updated for Scilab 6.

I try to avoid breaking out all the functions to separate files as
it will be tones of files in the folder then.

I am afraid that, if each of your functions is -- say -- a
callback, it must be public, and then now it requires to be defined
in a separate .sci file.

Regards
Samuel

_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev [3]



Links:
------
[1] https://atoms.scilab.org/toolboxes/guibuilder/3.1#comment2713
[2] http://bugzilla.scilab.org/show_bug.cgi?id=14525
[3] http://lists.scilab.org/mailman/listinfo/dev

_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev
_______________________________________________
dev mailing list
[email protected]
http://lists.scilab.org/mailman/listinfo/dev

Reply via email to