diff options
| author | ksss <[email protected]> | 2016-11-17 14:57:30 +0900 |
|---|---|---|
| committer | ksss <[email protected]> | 2016-11-17 14:57:30 +0900 |
| commit | 176d93d72a9322f7f8e41aea0b06a857b7ba23aa (patch) | |
| tree | dadf6c3fdaef2ce164177830e8df42ea46cf12a4 | |
| parent | 1685eff2a5e672173d67916a1c96648df92b7271 (diff) | |
| download | mruby-176d93d72a9322f7f8e41aea0b06a857b7ba23aa.tar.gz mruby-176d93d72a9322f7f8e41aea0b06a857b7ba23aa.zip | |
Ranges should not rewrite
| -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 |
