From 39460485f4a325832eab3a3731c930eef5552f76 Mon Sep 17 00:00:00 2001 From: Andy Ferris Date: Sun, 3 Dec 2017 21:09:56 +1000 Subject: [PATCH 1/2] Make `keys(::Tuple)` return a `Tuple`. --- base/tuple.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base/tuple.jl b/base/tuple.jl index 4a8e26ca29b70..6197879a3aba7 100644 --- a/base/tuple.jl +++ b/base/tuple.jl @@ -38,7 +38,7 @@ start(t::Tuple) = 1 done(t::Tuple, i::Int) = (length(t) < i) next(t::Tuple, i::Int) = (t[i], i+1) -keys(t::Tuple) = 1:length(t) +keys(t::Tuple) = ntuple(identity, Val(length(t))) prevind(t::Tuple, i::Integer) = Int(i)-1 nextind(t::Tuple, i::Integer) = Int(i)+1 From 8540465d4c90cc94314ffe325f8474f9c267aff1 Mon Sep 17 00:00:00 2001 From: Andy Ferris Date: Sun, 3 Dec 2017 21:12:43 +1000 Subject: [PATCH 2/2] Test keys(::Tuple) --- test/tuple.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/tuple.jl b/test/tuple.jl index 7fda7483c9572..de47a190f8caf 100644 --- a/test/tuple.jl +++ b/test/tuple.jl @@ -243,6 +243,8 @@ end @test reverse(()) === () @test reverse((1,2,3)) === (3,2,1) + + @test keys((1, 2.0, :c)) === (1, 2, 3) end # issue #21697 @test_throws ArgumentError ntuple(identity, -1)