aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-30 08:11:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-11-30 08:11:17 +0000
commit794fb410993c0c2ef7a1eb398f0f3e263ca7d1c9 (patch)
treeb1d2e5d3cd195e6aa6025a2fce4e1a4384a76f20 /parse.y
parent4c6dd77df5f441ab49f610d7cb6648950f23dad2 (diff)
downloadruby-794fb410993c0c2ef7a1eb398f0f3e263ca7d1c9.tar.gz
parse.y: dispatch heredoc end
* parse.y (ripper_dispatch_heredoc_end): at the end of here document, the terminator always should present. has_scan_event is true. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y14
1 files changed, 4 insertions, 10 deletions
diff --git a/parse.y b/parse.y
index 86824f9199..3cebf0a03c 100644
--- a/parse.y
+++ b/parse.y
@@ -5223,7 +5223,6 @@ ripper_yylval_id(ID x)
#ifndef RIPPER
#define ripper_flush(p) (void)(p)
#define dispatch_scan_event(t) ((void)0)
-#define dispatch_ignored_scan_event(t) ((void)0)
#define dispatch_delayed_token(t) ((void)0)
#define has_delayed_token() (0)
#else
@@ -5264,14 +5263,6 @@ ripper_dispatch_scan_event(struct parser_params *parser, int t)
#define dispatch_scan_event(t) ripper_dispatch_scan_event(parser, t)
static void
-ripper_dispatch_ignored_scan_event(struct parser_params *parser, int t)
-{
- if (!ripper_has_scan_event(parser)) return;
- (void)ripper_scan_event_val(parser, t);
-}
-#define dispatch_ignored_scan_event(t) ripper_dispatch_ignored_scan_event(parser, t)
-
-static void
ripper_dispatch_delayed_token(struct parser_params *parser, int t)
{
int saved_line = ruby_sourceline;
@@ -6627,10 +6618,13 @@ parser_set_integer_literal(struct parser_params *parser, VALUE v, int suffix)
static void
ripper_dispatch_heredoc_end(struct parser_params *parser)
{
+ VALUE str;
if (has_delayed_token())
dispatch_delayed_token(tSTRING_CONTENT);
+ str = STR_NEW(parser->tokp, lex_pend - parser->tokp);
+ ripper_dispatch1(parser, ripper_token2eventid(tHEREDOC_END), str);
lex_goto_eol(parser);
- dispatch_ignored_scan_event(tHEREDOC_END);
+ ripper_flush(parser);
}
#define dispatch_heredoc_end() ripper_dispatch_heredoc_end(parser)