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
This commit is contained in:
parent
4c6dd77df5
commit
794fb41099
14
parse.y
14
parse.y
@ -5223,7 +5223,6 @@ ripper_yylval_id(ID x)
|
|||||||
#ifndef RIPPER
|
#ifndef RIPPER
|
||||||
#define ripper_flush(p) (void)(p)
|
#define ripper_flush(p) (void)(p)
|
||||||
#define dispatch_scan_event(t) ((void)0)
|
#define dispatch_scan_event(t) ((void)0)
|
||||||
#define dispatch_ignored_scan_event(t) ((void)0)
|
|
||||||
#define dispatch_delayed_token(t) ((void)0)
|
#define dispatch_delayed_token(t) ((void)0)
|
||||||
#define has_delayed_token() (0)
|
#define has_delayed_token() (0)
|
||||||
#else
|
#else
|
||||||
@ -5263,14 +5262,6 @@ ripper_dispatch_scan_event(struct parser_params *parser, int t)
|
|||||||
}
|
}
|
||||||
#define dispatch_scan_event(t) ripper_dispatch_scan_event(parser, 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
|
static void
|
||||||
ripper_dispatch_delayed_token(struct parser_params *parser, int t)
|
ripper_dispatch_delayed_token(struct parser_params *parser, int t)
|
||||||
{
|
{
|
||||||
@ -6627,10 +6618,13 @@ parser_set_integer_literal(struct parser_params *parser, VALUE v, int suffix)
|
|||||||
static void
|
static void
|
||||||
ripper_dispatch_heredoc_end(struct parser_params *parser)
|
ripper_dispatch_heredoc_end(struct parser_params *parser)
|
||||||
{
|
{
|
||||||
|
VALUE str;
|
||||||
if (has_delayed_token())
|
if (has_delayed_token())
|
||||||
dispatch_delayed_token(tSTRING_CONTENT);
|
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);
|
lex_goto_eol(parser);
|
||||||
dispatch_ignored_scan_event(tHEREDOC_END);
|
ripper_flush(parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
#define dispatch_heredoc_end() ripper_dispatch_heredoc_end(parser)
|
#define dispatch_heredoc_end() ripper_dispatch_heredoc_end(parser)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user