Skip to content

Commit 4ba0eed

Browse files
author
Pietro Vertechi
authored
Fix collecting an array of tuples (JuliaArrays#20)
1 parent 3ab2609 commit 4ba0eed

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

src/structarray.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ end
4444
@generated function StructArray(v::AbstractArray{T, N}; unwrap = t -> false) where {T, N}
4545
syms = [gensym() for i in 1:fieldcount(T)]
4646
init = Expr(:block, [:($(syms[i]) = _similar(v, $(fieldtype(T, i)); unwrap = unwrap)) for i in 1:fieldcount(T)]...)
47-
push = Expr(:block, [:($(syms[i])[j] = f.$(fieldname(T, i))) for i in 1:fieldcount(T)]...)
47+
push = Expr(:block, [:($(syms[i])[j] = getfield(f, $i)) for i in 1:fieldcount(T)]...)
4848
quote
4949
$init
5050
for (j, f) in enumerate(v)

test/runtests.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,16 @@ unwrap(::Type) = false
100100
unwrap(::Type{<:NamedTuple}) = true
101101

102102
g_infer() = StructArray([(a=(b=1,), c=2)], unwrap = unwrap)
103+
tup_infer() = StructArray([(1, 2), (3, 4)])
103104

104105
@testset "inferrability" begin
105106
@inferred f_infer()
106107
@inferred g_infer()
107108
@test g_infer().a.b == [1]
109+
s = @inferred tup_infer()
110+
@test Tables.columns(s) == (x1 = [1, 3], x2 = [2, 4])
111+
@test s[1] == (1, 2)
112+
@test s[2] == (3, 4)
108113
end
109114

110115
@testset "propertynames" begin

0 commit comments

Comments
 (0)