This one is a bit harder than it seems.

So here is what throws:
https://github.com/rakudo/rakudo/blob/f62ae60c48d1372df18b49aca44e10af44ead2d6/src/Perl6/Grammar.nqp#L315

However, the cursor has wrong position for some reason. Looking at the lines
above, it may seem that doing this:

self.'!cursor_pos'($pos);

should fix the problem… but it doesn't! $pos variable is set correctly, but
!cursor_pos does absolutely nothing. In fact, you can try setting it to 0 or
any other value, no effect whatsoever.

This suggests that the use of !cursor_pos in the same method does not work too.
What is the right way to set the cursor?

And why does the cursor even have the incorrect value there?

As a bonus, this line seems to be unreachable:
self.missing("block (taken by some undeclared routine?)");

I tried various things but nothing can trigger it. I found (via google) some
code snippets that used to result in this error message, but nowadays it simply
says “Missing block”. I bisected that change to
https://github.com/rakudo/rakudo/commit/8a70c921e98ed260d3198d81b81b0960c8daa83b


On 2015-07-24 05:13:59, alex.jakime...@gmail.com wrote:
> Code:
> if True if { };
>
> ===SORRY!=== Error while compiling ./test.pl
> Missing block
> at ./test.pl:3
> ------> if True if ⏏{ };
>
> Clearly the block is there. It seems like it expects a block before the
> second "if", but the cursor is placed incorrectly. STD gets it right:
>
> 15:03:25<jnthn> std: if True if { };
> 15:03:26<camelia> std 28329a7: OUTPUT«===SORRY!===␤Missing block at
> /tmp/XbS0PJUJZo line 1:␤------> if True ⏏if { };␤Parse
> failed␤FAILED 00:00 135m␤»
>
> Similar problem with "unless", "while" and maybe some others.
>
> Tiny IRC discussion: http://irclog.perlgeek.de/perl6/2015-07-24#i_10947603

Reply via email to