From ecd1aab5266315f947b0568cb56fab4f63453c83 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 5 Jun 2000 08:46:59 +0000 Subject: 2000-06-05 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- parse.y | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) (limited to 'parse.y') diff --git a/parse.y b/parse.y index f365b1f575..75c0ad8acd 100644 --- a/parse.y +++ b/parse.y @@ -4737,20 +4737,22 @@ rb_id2name(id) return name; if (is_attrset_id(id)) { - char *res; - ID id2; + ID id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL; - id2 = (id & ~ID_SCOPE_MASK) | ID_LOCAL; - res = rb_id2name(id2); + again: + name = rb_id2name(id2); + if (name) { + char *buf = ALLOCA_N(char, strlen(name)+2); - if (res) { - char *buf = ALLOCA_N(char, strlen(res)+2); - - strcpy(buf, res); + strcpy(buf, name); strcat(buf, "="); rb_intern(buf); return rb_id2name(id); } + if (is_local_id(id2)) { + id2 = (id & ~ID_SCOPE_MASK) | ID_CONST; + goto again; + } } return 0; } -- cgit v1.2.3