diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-05 08:46:59 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2000-06-05 08:46:59 +0000 |
| commit | 5db7e288099fadf0c03be3996a72ad2620161ae5 (patch) | |
| tree | 01d36aee863b377fd1d10902e134e4483d647597 /parse.y | |
| parent | 2c8722f5e5dbc84690f0fe5b6c51c6e2225033fa (diff) | |
| download | ruby-5db7e288099fadf0c03be3996a72ad2620161ae5.tar.gz ruby-5db7e288099fadf0c03be3996a72ad2620161ae5.tar.xz ruby-5db7e288099fadf0c03be3996a72ad2620161ae5.zip | |
2000-06-05
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@731 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
| -rw-r--r-- | parse.y | 18 |
1 files changed, 10 insertions, 8 deletions
@@ -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; } |
