Project

General

Profile

Actions

Bug #608

closed

duplicated when clause

Added by mame (Yusuke Endoh) about 16 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
Backport:
[ruby-dev:36616]

Description

=begin
遠藤です。

when 節に同じ値があるときの挙動が 1.8 と 1.9 で異なるようです。

$ ruby18 -e '
case 1
when 1 then p :foo
when 1 then p :bar
end
'
:foo

$ ruby19 -e '
case 1
when 1 then p :foo
when 1 then p :bar
end
'
:bar

1.9 のバグではないかと思います。
以下のパッチをコミットしてもいいでしょうか。

Index: compile.c

--- compile.c (revision 19604)
+++ compile.c (working copy)
@@ -1349,7 +1349,9 @@
rb_compile_error(RSTRING_PTR(iseq->filename), iobj->line_no,
"unknown label");
}

  •  		rb_hash_aset(map, obj, INT2FIX(lobj->position - (pos+len)));
    
  •  		if (!st_lookup(rb_hash_tbl(map), obj, 0)) {
    
  •  		    rb_hash_aset(map, obj, INT2FIX(lobj->position - (pos+len)));
    
  •  		}
     	    }
     	    generated_iseq[pos + 1 + j] = map;
     	    iseq_add_mark_object(iseq, map);
    

--
Yusuke ENDOH
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0