Author: pmichaud Date: Fri Jan 16 08:48:10 2009 New Revision: 35633 Modified: trunk/languages/perl6/src/classes/Signature.pir
Log: [rakudo]: Require arguments to &foo to be callable. Modified: trunk/languages/perl6/src/classes/Signature.pir ============================================================================== --- trunk/languages/perl6/src/classes/Signature.pir (original) +++ trunk/languages/perl6/src/classes/Signature.pir Fri Jan 16 08:48:10 2009 @@ -287,6 +287,7 @@ orig = callerlex[name] if sigil == '@' goto param_array if sigil == '%' goto param_hash + if sigil != '$' goto param_sub var = '!CALLMETHOD'('Scalar', orig) ## typecheck the argument if null type goto param_val_done @@ -330,6 +331,11 @@ ## place the updated variable back into lex callerlex[name] = var goto param_loop + param_sub: + $I0 = isa orig, 'Sub' + unless $I0 goto err_sub + if $I0 goto param_loop + param_done: end: .return () @@ -343,6 +349,9 @@ goto err_throw err_hash: errmsg = 'Non-Associative argument' + goto err_throw + err_sub: + errmsg = 'Non-Callable argument' err_throw: .local string callername callername = callersub