Feature #16128
Updated by nobu (Nobuyoshi Nakada) about 5 years ago
I was not sure whether the following behaviour is a bug or not, so I filed this under "feature", mostly because this may change existing behaviour; and even if I think the current behaviour in this context may not make a lot of sense, perhaps there are caveats; or it may be too insignificant to want to change. Anyway, without further ado, I will next show the ruby code that can be used to reproduce the issue/behaviour that I refer to: ```ruby class Foo def initialize menu(:random_colour) end def menu(i) case i.to_s when /^-?-?random(-|_)?colou?r$/i, /rcolour$/i, 'RCOL', print_foobar end end def print_foobar print 'foobar' end end Foo.new ``` To those who may not immediately see the problem - it is the last ',' character in the case/when menu, right after the string 'RCOL'. The above snippet was part of a much larger class/codebase, so I narrowed it down to this smaller example. If you run this code, you will see no output. The reason is due to the ','. If you remove the ',', then you get the desired output - the invocation of the method called print_foobar() which will print 'foobar'. I discovered this strange behaviour by accident in a much larger case/when menu (my case/when menu interfaces can be excessively long, I admit this). Sometimes I re-arrange the case menu, and then I may forget the ',' there, so I paste the ',' with the line, which sometimes leads to above situation, which tends to confuse me. I am quite used to this at this point, so discovering the problem does not take me long - but I was wondering whether this current behaviour is useful for anything? Because if not then perhaps there could be a warning by ruby, possibly by the did-you-mean gem, or by ruby directly even without the did-you-mean gem (although I think this may fit the did-you-mean gem). I have, however had, decided to first report this to ruby core anyway, because perhaps I am missing something obvious that may explain the behaviour. Or perhaps it is difficult to distuingish what the next lines should be. But I assume that the ruby parser assumes another case/when statement here, after the ',', so does not treat the above as an error or problematic behaviour. Perhaps the above can still be reported based on additional information, such as correct indent level? I indent uniformly and consistently, so the above could provide additional cues what the ruby user at hand may have wanted to see - as in the example above, I don't think the trailing ',' is useful; it was just a typo. I am not sure how easy it is to distinguish this case between cases where the user wanted to have a ','. I am not sure how easy it would be to change the behaviour of ruby in this regard, or if it is wanted, or if it takes too much time, but I thought it is better to report it anyway - others can give their opinion in this case. Thanks!