Hi *, I was trying to see if one can delegate phasers to a proto, like this:
proto sub foo(|) { ENTER { say 'In' } LEAVE { say 'Out' } {*} } multi sub foo(Int $a) { $a } multi sub foo(Str $a) { $a } say foo(1); say foo('hello'); Yes indeed, it outputs: In Out 1 In Out hello But at first it didn't work, because I added a space on both sides of the '*': proto sub foo(|) { ENTER { say 'In' } LEAVE { say 'Out' } { * } } It outputs: In Out * In Out * If I add a return: proto sub foo(|) { ENTER { say 'In' } LEAVE { say 'Out' } return { * } } it outputs: In Out -> ;; $_? is raw = OUTER::<$_> { #`(Block|94038346387904) ... } In Out -> ;; $_? is raw = OUTER::<$_> { #`(Block|94038346388120) ... } Why are spaces significant in this case? If this behavior is intentional, can this be a trap worth being documented? -- Fernando Santagata