aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-23 06:49:35 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-09-23 06:49:35 +0000
commitb4c3aa8781540e90ea824416ff943ec7c4c84068 (patch)
tree6f09161f61a8fc4f23b1d349e0965ee168e35bd1 /parse.y
parent6977d9fbef33698adaa01411b0fd0ef7d6a98033 (diff)
downloadruby-b4c3aa8781540e90ea824416ff943ec7c4c84068.tar.gz
parse.y: token type by identifer ID type
* parse.y (parse_ident): leave identifier type decision (local or const) to rb_enc_symname_type, and set the token type by ID type. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59999 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y3
1 files changed, 2 insertions, 1 deletions
diff --git a/parse.y b/parse.y
index 9eb1a9c833..d4462dd691 100644
--- a/parse.y
+++ b/parse.y
@@ -7842,7 +7842,7 @@ parse_ident(struct parser_params *parser, int c, int cmd_state)
tokadd(c);
}
else {
- result = ISUPPER(tok()[0]) ? tCONSTANT : tIDENTIFIER;
+ result = tCONSTANT; /* assume provisionally */
pushback(c);
}
tokfix();
@@ -7909,6 +7909,7 @@ parse_ident(struct parser_params *parser, int c, int cmd_state)
}
ident = tokenize_ident(parser, last_state);
+ if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
(result == tIDENTIFIER) && /* not EXPR_FNAME, not attrasgn */
lvar_defined(ident)) {