summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2016-11-17 16:44:58 +0900
committerGitHub <[email protected]>2016-11-17 16:44:58 +0900
commitc8b028027fc148e377c013203710331682576b3b (patch)
treefecb0ba5269c9c4307a8182a7420589ec4b26665
parent5208ee534f81085127ef2f480992e8d104b908ea (diff)
parent176d93d72a9322f7f8e41aea0b06a857b7ba23aa (diff)
downloadmruby-c8b028027fc148e377c013203710331682576b3b.tar.gz
mruby-c8b028027fc148e377c013203710331682576b3b.zip
Merge pull request #3253 from ksss/range
Ranges should not rewrite
-rw-r--r--src/range.c3
-rw-r--r--test/t/range.rb2
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