diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-28 04:08:51 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-06-28 04:08:51 +0000 |
commit | 87afbe4685bf5d39d94e312b78515d50b9364f4d (patch) | |
tree | 9033545cb4ac99047307f53f2dc5183218bba55b /parse.y | |
parent | 5b8ce2298ae990473a0356eb6bd5a949001aa70c (diff) | |
download | ruby-87afbe4685bf5d39d94e312b78515d50b9364f4d.tar.gz |
parse.y: flush numeric token
* parse.y (parser_number_literal_suffix, parse_numeric): flush
numeric token so following unexpected token part is marked.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59191 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r-- | parse.y | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -4886,10 +4886,12 @@ ripper_yylval_id(ID x) #endif #ifndef RIPPER +#define numeric_literl_flush(p) (parser->tokp = (p)) #define dispatch_scan_event(t) ((void)0) #define dispatch_delayed_token(t) ((void)0) #define has_delayed_token() (0) #else +#define numeric_literl_flush(p) ((void)0) #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val)) @@ -6516,6 +6518,7 @@ parser_number_literal_suffix(struct parser_params *parser, int mask) } if (!ISASCII(c) || ISALPHA(c) || c == '_') { lex_p = lastp; + numeric_literl_flush(lex_p); return 0; } pushback(c); @@ -6529,6 +6532,7 @@ parser_number_literal_suffix(struct parser_params *parser, int mask) } break; } + numeric_literl_flush(lex_p); return result; } @@ -7357,6 +7361,7 @@ parse_numeric(struct parser_params *parser, int c) if (nondigit) { char tmp[30]; trailing_uc: + numeric_literl_flush(lex_p - 1); snprintf(tmp, sizeof(tmp), "trailing `%c' in number", nondigit); yyerror(tmp); } @@ -7378,6 +7383,7 @@ parse_numeric(struct parser_params *parser, int c) } v = DBL2NUM(d); } + numeric_literl_flush(lex_p); return set_number_literal(v, type, suffix); } suffix = number_literal_suffix(NUM_SUFFIX_ALL); |