Kevin (>):
> I was playing with Game::Crypt

\o/

> and ran into the following problem. 
> Compile crashes with a Bogus statement error. It seems that the 
> insertion of a newline breaks the compile. I don't think this is perlsh 
> behaviour!
> 
> The following code reproduces it:
> 
> use v6;
> 
> sub foo($bar) {
> 
>      $bar
>      ==> grep { / Cat / } ==> map { substr(1) } # compiles
> }
> 
> sub baz($bar) {
> 
>      $bar
>      ==> grep { / Cat / }
>      ==> map { substr(1) } # does not compile
> 
> }

This is "expected" behavior -- the '}' after '/ Cat /' ends the statement, by 
S04's =head1 Statement-ending blocks.

I agree that many people will fall into this trap -- and that this is one of 
the very few cases when the rule seems to work against users' expectations -- 
but inserting a special case that makes this an exception to the S04 rule would 
set a bad precedent and break one-pass parsing. *Maaaybe* it'd be a good idea 
to have a prefix:<< ==> >> detect this case and tell people what to do.

For people who do want that code layout, unspace at the end of the line (`grep 
{ / Cat / } \`) makes it work, as the `}` is now no longer last on the line.

Rejecting ticket.

Reply via email to