From 64bdb0c395d0e7c21a833dcba6df33a7e89fc33c Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 10 Sep 2002 14:38:20 +0000 Subject: * parse.y (nextc): restore line number after here documents. (ruby-bugs-ja:PR#331) * parse.y (heredoc_restore): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2836 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ parse.y | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/ChangeLog b/ChangeLog index 125b65bc03..0f77818dda 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Tue Sep 10 23:35:46 2002 Nobuyoshi Nakada + + * parse.y (nextc): restore line number after here documents. + (ruby-bugs-ja:PR#331) + + * parse.y (heredoc_restore): ditto. + Tue Sep 10 18:26:52 2002 WATANABE Hirofumi * ext/extmk.rb, lib/mkmf.rb ($INCFLAGS): new var for -I$(topdir). diff --git a/parse.y b/parse.y index 3e9d47eea1..6eedddc6d1 100644 --- a/parse.y +++ b/parse.y @@ -2323,6 +2323,7 @@ yyerror(msg) return 0; } +static int heredoc_end; static int command_start = Qtrue; int ruby_in_compile = 0; @@ -2363,6 +2364,7 @@ yycompile(f, line) ruby__end__seen = 0; ruby_eval_tree = 0; + heredoc_end = 0; lex_strterm = 0; lex_strnest = 0; quoted_term = -1; @@ -2473,6 +2475,10 @@ nextc() VALUE v = lex_getline(); if (NIL_P(v)) return -1; + if (heredoc_end > 0) { + ruby_sourceline = heredoc_end; + heredoc_end = 0; + } ruby_sourceline++; lex_pbeg = lex_p = RSTRING(v)->ptr; lex_pend = lex_p + RSTRING(v)->len; @@ -2989,6 +2995,8 @@ heredoc_restore(here) lex_pbeg = RSTRING(line)->ptr; lex_pend = lex_pbeg + RSTRING(line)->len; lex_p = lex_pbeg + here->nd_nth; + heredoc_end = ruby_sourceline; + ruby_sourceline = nd_line(here); rb_gc_force_recycle(here->nd_lit); rb_gc_force_recycle((VALUE)here); } -- cgit v1.2.3