diff options
author | nagachika <nagachika@ruby-lang.org> | 2021-02-20 12:12:35 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-02-20 12:12:35 +0900 |
commit | 69d01653f831052acdc803aad0b78690ad61ca86 (patch) | |
tree | 6d833700829893520fa3b20416e3f42e517b7f8f /test | |
parent | ea222b05571741f36b59f615c2e83b3adafbd398 (diff) |
merge revision(s) 1b1ea7b3bc9484e6e59d716fce2965a2f39d1e3d,b6e6807993c770c5d2e069d8741f5dadf0b38069: [Backport #17092]
Fix Array#flatten for recursive array when given positive depth [Bug
#17092]
---
array.c | 44 ++++++++++++++++++++++++++------------------
test/ruby/test_array.rb | 14 +++++++++++---
2 files changed, 37 insertions(+), 21 deletions(-)
Initialize memo pointer and use it consistently to silence gcc 7+
---
array.c | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_array.rb | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index 476cf795f0..f2956a7fba 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -886,6 +886,17 @@ class TestArray < Test::Unit::TestCase assert_raise(NoMethodError, bug12738) { a.flatten.m } end + def test_flatten_recursive + a = [] + a << a + assert_raise(ArgumentError) { a.flatten } + b = [1]; c = [2, b]; b << c + assert_raise(ArgumentError) { b.flatten } + + assert_equal([1, 2, b], b.flatten(1)) + assert_equal([1, 2, 1, 2, 1, c], b.flatten(4)) + end + def test_flatten! a1 = @cls[ 1, 2, 3] a2 = @cls[ 5, 6 ] @@ -2624,9 +2635,6 @@ class TestArray < Test::Unit::TestCase def test_flatten_error a = [] - a << a - assert_raise(ArgumentError) { a.flatten } - f = [].freeze assert_raise(ArgumentError) { a.flatten!(1, 2) } assert_raise(TypeError) { a.flatten!(:foo) } |