Open p6rt opened 8 years ago
To me this looks like a bug, or at least an inconsistency. The failure to do a Callable means it can't be accepted into (&thing) in routines, which is how I discovered this:
m: say Any.^can("push")[0] ~~ Callable; rakudo-moar c587b9: OUTPUT«False»
m: say Any.^can("push")[0].^mro rakudo-moar c587b9: OUTPUT«((Method+{\<anon|42801984>}) (Method) (Routine) (Block) (Code) (Any) (Mu))»
m: say Any.^can("say")[0].^mro rakudo-moar c587b9: OUTPUT«((Method) (Routine) (Block) (Code) (Any) (Mu))»
m: sub (&thing) {}( Any.^can("push")[0] )
rakudo-moar c587b9: OUTPUT«Type check failed in binding to &thing; expected Callable but got Method+{\<anon|42801984>} (Method+{\<anon|4280198...) in sub at \
m: sub (&thing) {}( Any.^can("say")[0] ) rakudo-moar c587b9: ( no output )
The only difference between “push” and “say” I can find, is that “push” is marked “is nodal”
However, trying to replicate this outside of the setting, does work as expected:
$ 6 'class A { proto method a() is nodal { } }; say A.^can("a")[0] ~~ Callable True
Looks like it is even deeper, at the nqp level:
$ 6 'use nqp; say nqp::istype(Any.^can("push")[0],Callable)’ 0
Not sure where to go from here yet
On 12 Aug 2016, at 05:32, Zoffix Znet (via RT) \perl6\-bugs\-followup@​perl\.org wrote:
# New Ticket Created by Zoffix Znet # Please include the string: [perl #128905] # in the subject line of all future correspondence about this issue. # \<URL: https://rt-archive.perl.org/perl6/Ticket/Display.html?id=128905 >
To me this looks like a bug, or at least an inconsistency. The failure to do a Callable means it can't be accepted into (&thing) in routines, which is how I discovered this:
m: say Any.^can("push")[0] ~~ Callable; rakudo-moar c587b9: OUTPUT«False»
m: say Any.^can("push")[0].^mro rakudo-moar c587b9: OUTPUT«((Method+{\<anon|42801984>}) (Method) (Routine) (Block) (Code) (Any) (Mu))»
m: say Any.^can("say")[0].^mro rakudo-moar c587b9: OUTPUT«((Method) (Routine) (Block) (Code) (Any) (Mu))»
m: sub (&thing) {}( Any.^can("push")[0] ) rakudo-moar c587b9: OUTPUT«Type check failed in binding to &thing; expected Callable but got Method+{\<anon|42801984>} (Method+{\<anon|4280198...) in sub at \
line 1 in block \ at \ line 1» m: sub (&thing) {}( Any.^can("say")[0] ) rakudo-moar c587b9: ( no output )
The RT System itself - Status changed from 'new' to 'open'
Looks like this bug affects subroutines too:
m: say &defined ~~ Callable rakudo-moar 3e1382: OUTPUT: «False»
m: say [0,1,2,Any].grep(&defined)
rakudo-moar 3e1382: OUTPUT: «Cannot resolve caller ACCEPTS(Sub+{\<anon|56691824>}: Int); \
Also affects some methods:
\<Zoffix__> m: my %h; say %h.AT-KEY: 1|2
\
On Wed, 13 Dec 2017 19:23:38 -0800, cpan@zoffix.com wrote:
Also affects some methods:
\<Zoffix__> m: my %h; say %h.AT-KEY: 1|2 \
rakudo-moar eaf609edb: OUTPUT: «Type check failed in binding to parameter '&call'; expected Callable but got Method+{is-nodal} (Method+{is-nodal}.new) in block \ at \ line 1»
This bug is blocking a potential fix for RT#125614[^1]. If you fix this ticket, please take a look if the fix for that other one can be merged.
[1] https://rt-archive.perl.org/perl6/Ticket/Display.html?id=125614
Migrated from rt.perl.org#128905 (status was 'open')
Searchable as RT128905$