summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y2
1 files changed, 2 insertions, 0 deletions
diff --git a/parse.y b/parse.y
index 366090f903..315723287f 100644
--- a/parse.y
+++ b/parse.y
@@ -9758,10 +9758,12 @@ rb_enc_symname_type(const char *name, long len, rb_encoding *enc)
while (m < e && is_identchar(m, e, enc)) m += rb_enc_mbclen(m, e, enc);
switch (*m) {
case '!': case '?':
+ if (type == ID_GLOBAL || type == ID_CLASS || type == ID_INSTANCE) return -1;
type = ID_JUNK;
++m;
break;
case '=':
+ if (type != ID_CONST && type != ID_LOCAL) return -1;
type = ID_ATTRSET;
++m;
break;