diff options
| author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-04 05:57:35 +0000 |
|---|---|---|
| committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2006-09-04 05:57:35 +0000 |
| commit | f859d0aa653e2c00dc99804fe2f4dcff7c387a2d (patch) | |
| tree | e3dd013eafb76c6d89373053bf835a98b8ced5ba | |
| parent | c50c06d4d6246e237907cb17012be2a19a885b74 (diff) | |
| download | ruby-f859d0aa653e2c00dc99804fe2f4dcff7c387a2d.tar.gz ruby-f859d0aa653e2c00dc99804fe2f4dcff7c387a2d.tar.xz ruby-f859d0aa653e2c00dc99804fe2f4dcff7c387a2d.zip | |
* parse.y (rb_id2sym): intern if id is attrset_id.
[ruby-dev:29420] [ruby-dev:29447]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@10849 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 5 | ||||
| -rw-r--r-- | parse.y | 16 |
2 files changed, 15 insertions, 6 deletions
@@ -1,3 +1,8 @@ +Mon Sep 4 06:46:08 2006 Yukihiro Matsumoto <matz@ruby-lang.org> + + * parse.y (rb_id2sym): intern if id is attrset_id. + [ruby-dev:29420] [ruby-dev:29447] + Mon Sep 4 01:25:16 2006 Yukihiro Matsumoto <matz@ruby-lang.org> * eval.c (rb_f_local_variables): list symbols. @@ -7884,7 +7884,10 @@ arg_blk_pass(NODE *node1, NODE *node2) static int arg_dup_check(ID vid, VALUE m, VALUE list, NODE *node) { - VALUE sym = ID2SYM(vid); + VALUE sym; + + if (!vid) return 0; + sym = ID2SYM(vid); if ((m && rb_ary_includes(m, sym)) || rb_ary_includes(list, sym)) { ruby_sourceline = nd_line(node); return 1; @@ -8468,12 +8471,13 @@ rb_id2sym(ID id) { VALUE data; - if (st_lookup(global_symbols.id_sym, id, &data)) { - if (!RBASIC(data)->klass) { - RBASIC(data)->klass = rb_cSymbol; - } - return data; + while (!st_lookup(global_symbols.id_sym, id, &data)) { + rb_id2name(id); + } + if (!RBASIC(data)->klass) { + RBASIC(data)->klass = rb_cSymbol; } + return data; } ID |
