Skip to content

Commit 2ba1f32

Browse files
committed
Add tests for ntuple(f, Val{N}) for 0 ≤ N ≤ 15
1 parent 8add740 commit 2ba1f32

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

base/tuple.jl

+16-16
Original file line numberDiff line numberDiff line change
@@ -123,22 +123,22 @@ end
123123
_ntuple(f, n) = (@_noinline_meta; ([f(i) for i = 1:n]...))
124124

125125
# inferrable ntuple
126-
ntuple{F}(f::F, ::Type{Val{0}}) = (@_inline_meta; ())
127-
ntuple{F}(f::F, ::Type{Val{1}}) = (@_inline_meta; (f(1),))
128-
ntuple{F}(f::F, ::Type{Val{2}}) = (@_inline_meta; (f(1), f(2)))
129-
ntuple{F}(f::F, ::Type{Val{3}}) = (@_inline_meta; (f(1), f(2), f(3)))
130-
ntuple{F}(f::F, ::Type{Val{4}}) = (@_inline_meta; (f(1), f(2), f(3), f(4)))
131-
ntuple{F}(f::F, ::Type{Val{5}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5)))
132-
ntuple{F}(f::F, ::Type{Val{6}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6)))
133-
ntuple{F}(f::F, ::Type{Val{7}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7)))
134-
ntuple{F}(f::F, ::Type{Val{8}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8)))
135-
ntuple{F}(f::F, ::Type{Val{9}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9)))
136-
ntuple{F}(f::F, ::Type{Val{10}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10)))
137-
ntuple{F}(f::F, ::Type{Val{11}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11)))
138-
ntuple{F}(f::F, ::Type{Val{12}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12)))
139-
ntuple{F}(f::F, ::Type{Val{13}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13)))
140-
ntuple{F}(f::F, ::Type{Val{14}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13), f(14)))
141-
ntuple{F}(f::F, ::Type{Val{15}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13), f(14), f(15)))
126+
ntuple(f, ::Type{Val{0}}) = (@_inline_meta; ())
127+
ntuple(f, ::Type{Val{1}}) = (@_inline_meta; (f(1),))
128+
ntuple(f, ::Type{Val{2}}) = (@_inline_meta; (f(1), f(2)))
129+
ntuple(f, ::Type{Val{3}}) = (@_inline_meta; (f(1), f(2), f(3)))
130+
ntuple(f, ::Type{Val{4}}) = (@_inline_meta; (f(1), f(2), f(3), f(4)))
131+
ntuple(f, ::Type{Val{5}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5)))
132+
ntuple(f, ::Type{Val{6}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6)))
133+
ntuple(f, ::Type{Val{7}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7)))
134+
ntuple(f, ::Type{Val{8}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8)))
135+
ntuple(f, ::Type{Val{9}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9)))
136+
ntuple(f, ::Type{Val{10}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10)))
137+
ntuple(f, ::Type{Val{11}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11)))
138+
ntuple(f, ::Type{Val{12}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12)))
139+
ntuple(f, ::Type{Val{13}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13)))
140+
ntuple(f, ::Type{Val{14}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13), f(14)))
141+
ntuple(f, ::Type{Val{15}}) = (@_inline_meta; (f(1), f(2), f(3), f(4), f(5), f(6), f(7), f(8), f(9), f(10), f(11), f(12), f(13), f(14), f(15)))
142142

143143
function ntuple{F,N}(f::F, ::Type{Val{N}})
144144
Core.typeassert(N, Int)

test/tuple.jl

+5
Original file line numberDiff line numberDiff line change
@@ -251,3 +251,8 @@ end
251251
tuple16int = (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
252252
@test Tuple16Int(tuple16int) isa Tuple16Int
253253
end
254+
255+
# PR #21446
256+
for n = 0:15
257+
@test ntuple(identity, Val{n}) == ntuple(identity, n)
258+
end

0 commit comments

Comments
 (0)