I understand that the symbols must be used in the same block as the
require statement. There is then still a problem, namely the difference
between linux and windows.
In the mean time I will try to get the usage of the functions to the
block where it is required.
Marcel
On 17-04-17 19:12, Zoffix Znet via RT wrote:
thanks for the link, I will look into it.
The code for which the windows implementation fails but not on linux,
can be found here;
https://github.com/MARTIMM/config-datalang-refine/blob/master/lib/Config/DataLang/Refine.pm6
the requires are at line 57 and 64
and the error is thrown at line 193 where the function is used.
thanks again,
Marcel
On Mon, 17 Apr 2017 09:53:28 -0700, mt1...@gmail.com wrote:
Since I've installed perl6 version 2017.03-234-g0ebdaa4 built on MoarVM
version 2017.03-128-gc9ab59c, several modules are experiencing failures
when using the following construct (golfed down)(I am sure that the
module loads)
my $m = 'somemodule';
require ::($m);
my $o = ::($m).new;
However, in a simple setup it works fine. I could manage to rewrite
things in such a way that errors disappear, but I do not understand it.
A question is 'Are the symbols loaded lexically in such a way that it is
not possible to instantiate the class in another method?'
A remaining bug on windows(with latest rakudostar) shows the error;
Failed to load Config::TOML;
Lexical with name '&from-toml' does not exist in this frame
when using something like the following
my $m = 'Config::TOML';
require ::($m) <&from-toml>;
see also
https://ci.appveyor.com/project/MARTIMM/config-datalang-refine/branch/master
Other things I've seen before are; not able to find the class name
symbol when I want to instatiate the class, or the .^name is shorter
than the real class name should be, which accounts for the first error.
Regards,
Marcel
Can't reproduce either of the issues you describe. Do you have a piece of code
we can run that repos the problem?
Also, have you seen the lexical require Upgrade Notification?
http://rakudo.org/2017/03/18/lexical-require-upgrade-info/
my $m = 'Test';
require ::($m) <&ok>;
ok 1, 1;
# OUTPUT: ok 1 - 1
my $m = 'DBIish';
require ::($m);
my $o = ::($m).new;
dd $o;
# OUTPUT: DBIish $o = DBIish.new