Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error message prints wrong eject position (if True if { };) #4431

Open
p6rt opened this issue Jul 24, 2015 · 4 comments
Open

error message prints wrong eject position (if True if { };) #4431

p6rt opened this issue Jul 24, 2015 · 4 comments
Labels
LTA Less Than Awesome; typically an error message that could be better testcommitted

Comments

@p6rt
Copy link

p6rt commented Jul 24, 2015

Migrated from rt.perl.org#125674 (status was 'new')

Searchable as RT125674$

@p6rt
Copy link
Author

p6rt commented Jul 24, 2015

From @AlexDaniel

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

@p6rt
Copy link
Author

p6rt commented Oct 7, 2017

From @AlexDaniel

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 rakudo/rakudo@8a70c92

On 2015-07-24 05​:13​:59, alex.jakimenko@​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

@p6rt
Copy link
Author

p6rt commented Oct 7, 2017

From @AlexDaniel

Should be fixed in rakudo/rakudo@5747bc7121

Testneeded. Slightly relevant tests here​: Raku/roast@34577134e0

On 2017-10-06 21​:01​:48, alex.jakimenko@​gmail.com wrote​:

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
rakudo/rakudo@8a70c92

On 2015-07-24 05​:13​:59, alex.jakimenko@​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

@p6rt
Copy link
Author

p6rt commented Feb 2, 2018

From @AlexDaniel

Does not seem to be fixed at all. But I've added some todo-ed tests​: Raku/roast@f9f5034

On 2017-10-07 13​:43​:30, alex.jakimenko@​gmail.com wrote​:

Should be fixed in rakudo/rakudo@5747bc7121

Testneeded. Slightly relevant tests here​:
Raku/roast@34577134e0

On 2017-10-06 21​:01​:48, alex.jakimenko@​gmail.com wrote​:

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

rakudo/rakudo@8a70c92

On 2015-07-24 05​:13​:59, alex.jakimenko@​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

@p6rt p6rt added LTA Less Than Awesome; typically an error message that could be better testcommitted labels Jan 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
LTA Less Than Awesome; typically an error message that could be better testcommitted
Projects
None yet
Development

No branches or pull requests

1 participant