This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix debugger lines with keyword <newline> =>
authorFather Chrysostomos <sprout@cpan.org>
Sun, 1 Sep 2013 20:49:33 +0000 (13:49 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Sun, 1 Sep 2013 21:20:57 +0000 (14:20 -0700)
commit65c68e17188d09c96250348d769c0c309500d5b9
treeca5f67ed745c925d0c5b81935ff4c6e8ebf34cd8
parent5239c153d07c7f3ed720062743a8b89ae671a95f
Fix debugger lines with keyword <newline> =>

Commit 2179133 (in 5.19.2) modified the parser to look past newlines
when searching for => after a keyword.  In doing so, it stopped the
parser from saving lines correctly for the debugger:

$ PERL5DB='sub DB::DB{}' perl5.18.1 -detime -e'=>;' -e 'print @{"_<-e"}'
sub DB::DB{};
time
=>;
print @{"_<-e"}
$ PERL5DB='sub DB::DB{}' perl5.19.3 -detime -e'=>;' -e 'print @{"_<-e"}'
sub DB::DB{};
=>;
print @{"_<-e"}

Notice how line 1 is missing in 5.19.3.

When peeking ahead past the end of the line, lex_read_space does need
to avoid incrementing the line number from the caller’s (yylex’s) per-
spective, but it still needs to increment it for lex_next_chunk to put
the lines for the debugger in the right slot.  So this commit changes
lex_read_space to increment the line number but set it back again
after calling lex_next_chunk.

Another problem was that the buffer pointer was being restored for a
keyword followed by a line break, but only if there was *no* fat arrow
on the following line.
t/comp/line_debug_0.aux
toke.c