diff options
| -rw-r--r-- | src/range.c | 3 | ||||
| -rw-r--r-- | test/t/range.rb | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/src/range.c b/src/range.c index 079a1035e..41b41237c 100644 --- a/src/range.c +++ b/src/range.c @@ -129,6 +129,9 @@ mrb_range_initialize(mrb_state *mrb, mrb_value range) exclusive = FALSE; } /* Ranges are immutable, so that they should be initialized only once. */ + if (mrb_range_ptr(range)->edges) { + mrb_name_error(mrb, mrb_intern_lit(mrb, "initialize"), "`initialize' called twice"); + } range_init(mrb, range, beg, end, exclusive); return range; } diff --git a/test/t/range.rb b/test/t/range.rb index 278b26902..c542c8f06 100644 --- a/test/t/range.rb +++ b/test/t/range.rb @@ -57,6 +57,8 @@ assert('Range#initialize', '15.2.14.4.9') do assert_true a.exclude_end? assert_equal (1..10), b assert_false b.exclude_end? + + assert_raise(NameError) { (0..1).send(:initialize, 1, 3) } end assert('Range#last', '15.2.14.4.10') do |
