summaryrefslogtreecommitdiff
diff options
-rw-r--r--range.c3
-rw-r--r--test/ruby/test_range.rb4
2 files changed, 7 insertions, 0 deletions
diff --git a/range.c b/range.c
index 2390c5d38c..27f681767f 100644
--- a/range.c
+++ b/range.c
@@ -1792,6 +1792,9 @@ range_include_internal(VALUE range, VALUE val, int string_use_cover)
else if (NIL_P(beg)) {
VALUE r = rb_funcall(val, id_cmp, 1, end);
if (NIL_P(r)) return Qfalse;
+ if (RANGE_EXCL(range)) {
+ return RBOOL(rb_cmpint(r, val, end) < 0);
+ }
return RBOOL(rb_cmpint(r, val, end) <= 0);
}
else if (NIL_P(end)) {
diff --git a/test/ruby/test_range.rb b/test/ruby/test_range.rb
index 8ac1930be6..8789eca749 100644
--- a/test/ruby/test_range.rb
+++ b/test/ruby/test_range.rb
@@ -604,6 +604,10 @@ class TestRange < Test::Unit::TestCase
assert_include(0...10, 5)
assert_include(5..., 10)
assert_not_include(5..., 0)
+ assert_include(.."z", "z")
+ assert_not_include(..."z", "z")
+ assert_include(..10, 10)
+ assert_not_include(...10, 10)
end
def test_cover