Skip Menu |
Report information
Id: 128905
Status: open
Priority: 0/
Queue: perl6

Owner: Nobody
Requestors: cpan [at] zoffix.com
Cc:
AdminCc:

Severity: (no value)
Tag: Bug
Platform: (no value)
Patch Status: (no value)
VM: (no value)



Subject: [BUG] Some core Routines do not do Callable role
Download (untitled) / with headers
text/plain 845b
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 <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤» m: sub (&thing) {}( Any.^can("say")[0] ) rakudo-moar c587b9: ( no output )
From: Elizabeth Mattijsen <liz [...] dijkmat.nl>
CC: bugs-bitbucket [...] rt.perl.org
Date: Fri, 12 Aug 2016 23:07:40 +0200
To: "Zoffix Znet (via RT)" <perl6-bugs-followup [...] perl.org>
Subject: Re: [perl #128905] [BUG] Some core Routines do not do Callable role
Download (untitled) / with headers
text/plain 1.5k
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 Show quoted text
> 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.perl.org/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 <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤» > > m: sub (&thing) {}( Any.^can("say")[0] ) > rakudo-moar c587b9: ( no output ) > >
RT-Send-CC: perl6-compiler [...] perl.org
Download (untitled) / with headers
text/plain 250b
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); <redacted>
Download (untitled) / with headers
text/plain 273b
Also affects some methods: <Zoffix__> m: my %h; say %h.AT-KEY: 1|2 <camelia> 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 <unit> at <tmp> line 1␤␤»
RT-Send-CC: perl6-compiler [...] perl.org
Download (untitled) / with headers
text/plain 545b
On Wed, 13 Dec 2017 19:23:38 -0800, cpan@zoffix.com wrote: Show quoted text
> Also affects some methods: > > <Zoffix__> m: my %h; say %h.AT-KEY: 1|2 > <camelia> 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 <unit> at <tmp> 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.perl.org/Ticket/Display.html?id=125614


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org