Bug #20401
closedDuplicated when clause warning line number
Description
When you have a duplicated when clause, you get a warning for it. For example:
case foo
when :bar
when :baz
when :bar
end
you get warning: duplicated `when' clause with line 2 is ignored
.
But the when clause that is ignored is the one on line 4, not line 2. It seems like it's warning for the wrong line.
Updated by kddnewton (Kevin Newton) 8 months ago
On the otherhand, if you have duplicated hash keys you get:
{
bar: 1,
baz: 1,
bar: 1
}
For the warning: warning: key :bar is duplicated and overwritten on line 4
. So this seems correct.
Updated by mame (Yusuke Endoh) 8 months ago
This behavior was discovered and briefly discussed during the previous dev meeting. The actual warning is
test.rb:4: warning: duplicated 'when' clause with line 2 is ignored
According to @nobu (Nobuyoshi Nakada), this reads "The 'when' clause at line 4 duplicates (conflicts) with (a 'when' clause at) line 2. This is ignored."
Anyway I agree that it is too confusing. I think it would be good if they could improve the English.
Updated by kddnewton (Kevin Newton) 6 months ago
I've updated the message to say:
'when' clause on line 4 duplicates 'when' clause on line 2 and is ignored
I hope this is okay, I believe it is much more clear. The PR is here: https://github.com/ruby/ruby/pull/10776. @nobu (Nobuyoshi Nakada) or @mame (Yusuke Endoh) could you review?
Updated by kddnewton (Kevin Newton) 6 months ago
I've merged it for now. Happy to revert or change further if there's any more feedback!
Updated by kddnewton (Kevin Newton) 6 months ago
- Status changed from Open to Closed