From: sawadatsuyoshi@... Date: 2016-02-19T15:37:33+00:00 Subject: [ruby-core:73894] [Ruby trunk Bug#12090] `Range#cover` does not raise an exception when comparison fails Issue #12090 has been reported by Tsuyoshi Sawada. ---------------------------------------- Bug #12090: `Range#cover` does not raise an exception when comparison fails https://bugs.ruby-lang.org/issues/12090 * Author: Tsuyoshi Sawada * Status: Open * Priority: Normal * Assignee: * ruby -v: * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN ---------------------------------------- The documentation for `Range#cover?` says, ~~~ cover?(obj) ��� true or false Returns true if obj is between the begin and end of the range. This tests begin <= obj <= end when exclude_end? is false and begin <= obj < end when exclude_end? is true. ~~~ which implies that, when comparison fails, `cover?` should raise an error. But actually, it doesn't: ~~~RUBY "a" <= 1 # => ArgumentError: comparison of String with 1 failed 1 <= "a" # => ArgumentError: comparison of Fixnum with String failed ("a".."z").cover?(1) # => false ~~~ It silently returns `false` instead of raising an error. Either `Range#cover?` should raise an error when comparison fails, or the documentation should be changed to correctly describe this behaviour. -- https://bugs.ruby-lang.org/ Unsubscribe: