t/spec/S02-builtin_data_types/type.t:23 in the spectests (r20685)
has the following:
my Int $foo;
my Str $bar;
#?rakudo skip 'type checking unimpl'
{
#?pugs 1 todo
is(try{$foo = 'xyz'}, undef, 'Int restricts to integers');
is(try{$foo = 42}, 42, 'Int is an integer');
#?pugs 1 todo
is(try{$bar = 42}, undef, 'Str restricts to strings');
is(try{$bar = 'xyz'}, 'xyz', 'Str is a strings');
}
However, statement_prefix:try is defined as (STD.pm:2749)
token statement_prefix:try { <sym> <.ws> <statement> {*} }
Thus <statement> subrule of the try statement ends up consuming all
of the arguments that were intended for C<is>. In other words,
it's parsing the C<try> statements as:
try {$foo = 'xyz'}, undef, 'Int restricts to integers'
try {$foo = 42}, 42, 'Int restricts to integers'
...
Anyone have comments or suggestions about how we might fix the
test or correct the grammar?
Thanks!
Pm