On Fri Jul 24 02:41:50 2009, masak wrote: > <masak> rakudo: sub foo(:$bar) { say $bar }; class A { has $.bar; > method baz() { foo(:$.bar) } }; A.new(:bar<OH HAI>).baz > <p6eval> rakudo b19862: OUTPUT«Symbol '$1bar' not predeclared in baz > [...] > <masak> :) > * masak submits rakudobug > <masak> now, are my expectations right in this case? could the above > code print "OH HAI"? > <Matt-W> masak: I don't know if your expectations are correct > <Matt-W> Is :$.bar supposed to be like :bar($.bar) > <masak> aye. > <masak> that was my expectation. > <moritz_> I don't think so > <Matt-W> Because I wouldn't expect so without reading it somewhere > <moritz_> because $.bar is not parsed as a variable, but as a method > call > <masak> moritz_: does that matter? > <moritz_> it does matter, Perl 6 is all about syntax > <masak> and what about :$!bar, then? > <Matt-W> I would expect the same behaviour as $.bar > <Matt-W> whatever that happens to be... > <masak> rakudo: sub foo(:$bar) { say $bar }; class A { has $!bar; > method baz() { foo(:$!bar) } }; A.new(:bar<OH HAI>).baz > <p6eval> rakudo b19862: OUTPUT«Symbol '$1bar' not predeclared in baz > [...] > <masak> I still think Rakudo does the Wrong thing here. > <moritz_> $1bar? > <masak> there's no $1bar variable. > <masak> right. > <moritz_> that's a less-than-awesome error message > <Matt-W> At the very least > <moritz_> (hint, hint) > <masak> yes, it alone merits a bug report. > <masak> moritz_: I'm writing it now. you're in it! :) > <Matt-W> It's either a Missing Feature or a less-than-awesome error > message > <Matt-W> the question is which > <masak> Matt-W: exactly. > <moritz_> well, the table in S06 for named arguments doesn't list it, > I think > <masak> I see no reason why it shouldn't work. > <masak> same with $^placeholder variables, I'd say. > <Matt-W> I see no reason why it should > <moritz_> convenience would a good reason, no? > <Matt-W> Mmm > <masak> I think so. > <Matt-W> I can seen an argument for it > <masak> consistency, too. > <moritz_> Perl 6 is all about convenience; otherwise we'd still be > writing assembler code ;-) > <masak> it's not like the syntax is being used for something else.
<Coke> rakudo: sub foo(:$bar) { say $bar }; class A { has $.bar; method baz() { foo(:$.bar) } }; A.new(:bar<OH HAI>).baz <p6eval> rakudo 2808a5: OUTPUT«OH HAI» Assigning to moritz++ for spectesting. -- Will "Coke" Coleda