Issue #5716 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to ko1 (Koichi Sasada)


----------------------------------------
Feature #5716: duplicated when clause is ignored -> Report which clause it is specifically.
https://bugs.ruby-lang.org/issues/5716#change-25273

Author: shevegen (markus heiler)
Status: Assigned
Priority: Low
Assignee: ko1 (Koichi Sasada)
Category: 
Target version: 


In latest Ruby 1.9.3, if you have warnings enabled, you get information like this here:

foobar.rb:24: warning: duplicated when clause is ignored

This error comes from the file:

  compile.c


rb_compile_warning(RSTRING_PTR(iseq->filename), iobj->line_no,
    "duplicated when clause is ignored");


This is called, it seems, when the prior function fails:

  rb_hash_aset(map, obj, INT2FIX(lobj->position - (pos+len)));


As a user of Ruby, the warning should be better.

Rather than:

  foobar.rb:24: warning: duplicated when clause is ignored

I would like to see:

  foobar.rb:24: warning: duplicated when clause 'foo' is ignored.

This way, I can scan through the file with the case/when structure
and correct this error. But right now, if you have a very long 
case/when structure, you have no idea WHICH clause is duplicated.

The warning message just vaguely says that there is, and this is
not very helpful information.


-- 
http://bugs.ruby-lang.org/