diff options
author | Nobuyoshi Nakada <[email protected]> | 2019-05-28 14:36:29 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <[email protected]> | 2019-05-28 14:36:29 +0900 |
commit | 62b3d4c721334108f89cd59407ffd910204e7868 (patch) | |
tree | e9e15a32fcb82fb67da35274c34a1dd4b7e4f808 | |
parent | 40e175b390f39afdddcfbf74afcad96093a158e7 (diff) |
Skip following all digits after `@@`
-rw-r--r-- | parse.y | 14 |
1 files changed, 6 insertions, 8 deletions
@@ -8368,13 +8368,13 @@ parse_atmark(struct parser_params *p, const enum lex_state_e last_state) return result; } else if (ISDIGIT(c)) { + const char *ptr = p->lex.pcur - 1; + size_t len = p->lex.pend - ptr; + int overflow; + unsigned long n = ruby_scan_digits(ptr, len, 10, &len, &overflow); + p->lex.pcur = ptr + len; + RUBY_SET_YYLLOC(loc); if (result == tIVAR) { - const char *ptr = p->lex.pcur - 1; - size_t len = p->lex.pend - ptr; - int overflow; - unsigned long n = ruby_scan_digits(ptr, len, 10, &len, &overflow); - p->lex.pcur = ptr + len; - RUBY_SET_YYLLOC(loc); if (IS_lex_state(EXPR_FNAME)) { compile_error(p, "`@%c' is not allowed as an instance variable name", c); } @@ -8389,8 +8389,6 @@ parse_atmark(struct parser_params *p, const enum lex_state_e last_state) } } else { - RUBY_SET_YYLLOC(loc); - pushback(p, c); compile_error(p, "`@@%c' is not allowed as a class variable name", c); } parser_show_error_line(p, &loc); |