summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-04 05:57:35 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-04 05:57:35 +0000
commitf859d0aa653e2c00dc99804fe2f4dcff7c387a2d (patch)
treee3dd013eafb76c6d89373053bf835a98b8ced5ba
parentc50c06d4d6246e237907cb17012be2a19a885b74 (diff)
downloadruby-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--ChangeLog5
-rw-r--r--parse.y16
2 files changed, 15 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index af7085e3c..59f30215b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
diff --git a/parse.y b/parse.y
index 34d118377..6637bba24 100644
--- a/parse.y
+++ b/parse.y
@@ -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