diff --git a/lib/literal/array.rb b/lib/literal/array.rb index 3720238..2aa3111 100644 --- a/lib/literal/array.rb +++ b/lib/literal/array.rb @@ -243,6 +243,10 @@ def first(...) @__value__.first(...) end + def flatten!(...) + @__value__.flatten!(...) ? self : nil + end + def freeze @__value__.freeze super diff --git a/test/array.test.rb b/test/array.test.rb index 34a29f4..f0fbdf1 100644 --- a/test/array.test.rb +++ b/test/array.test.rb @@ -472,3 +472,15 @@ array.narrow(Numeric) }.to_raise(ArgumentError) end + +test "#flatten! flattens the array" do + array = Literal::Array(Array).new([1, 2], [3, 4]) + + expect((array.flatten!).to_a) == [1, 2, 3, 4] +end + +test "#flatten! returns nil if no nested arrays" do + array = Literal::Array(Integer).new(1, 2, 3) + + expect(array.flatten!) == nil +end