diff --git a/base/tuple.jl b/base/tuple.jl index 815635bc3a14e..d274f07f5eb74 100644 --- a/base/tuple.jl +++ b/base/tuple.jl @@ -163,7 +163,7 @@ end # n argument function heads(ts::Tuple...) = map(t -> t[1], ts) tails(ts::Tuple...) = map(tail, ts) -map(f, ::Tuple{}, ts::Tuple...) = () +map(f, ::Tuple{}...) = () function map(f, t1::Tuple, t2::Tuple, ts::Tuple...) @_inline_meta (f(heads(t1, t2, ts...)...), map(f, tails(t1, t2, ts...)...)...) diff --git a/test/tuple.jl b/test/tuple.jl index 20ccbe348587c..cc7b96b29ef73 100644 --- a/test/tuple.jl +++ b/test/tuple.jl @@ -90,14 +90,17 @@ begin @test map(foo, (1,2), (1,2)) === (2,4) @test map(foo, (1,2,3,4), (1,2,3,4)) === (2,4,6,8) @test map(foo, longtuple, longtuple) === ntuple(i->2i,20) + @test_throws BoundsError map(foo, (), (1,)) + @test_throws BoundsError map(foo, (1,), ()) # n arguments @test map(foo, (), (), ()) === () - @test map(foo, (), (1,2,3), (1,2,3)) === () @test map(foo, (1,), (1,), (1,)) === (3,) @test map(foo, (1,2), (1,2), (1,2)) === (3,6) @test map(foo, (1,2,3,4), (1,2,3,4), (1,2,3,4)) === (3,6,9,12) @test map(foo, longtuple, longtuple, longtuple) === ntuple(i->3i,20) + @test_throws BoundsError map(foo, (), (1,), (1,)) + @test_throws BoundsError map(foo, (1,), (1,), ()) end ## comparison ##