On Mon Sep 03 09:15:38 2012, masak wrote: > <skids> r: sub f (::T $g) { for ($g) -> T $h { } }; f("blah"); > <p6eval> rakudo 962b9b: OUTPUT«Nominal type check failed for parameter > '$h'; expected T but got Str instead [...] > <masak> r: sub f (::T $g) { say T.^name }; f("blah") > <p6eval> rakudo 962b9b: OUTPUT«Str» > <masak> weyrd. > <skids> I do manage to run into some of the weirder ones, yes. :-) > <masak> r: sub f (::T $g) { say $g ~~ Str; say $g ~~ T; say Str ~~ T > }; f("blah") > <p6eval> rakudo 962b9b: OUTPUT«TrueTrueTrue» > <skids> it only happens in the for signature, every other place it > works. > <masak> r: sub f (::T $g) { for $g -> $h where { say Str ~~ T } {} }; > f("blah") > <p6eval> rakudo 962b9b: OUTPUT«True» > <masak> curious. > * masak submits rakudobug
Looks like this is closable with tests: $ ./perl6 > sub f (::T $g) { for ($g) -> T $h { } }; f("blah"); # no error -- Will "Coke" Coleda