Skip to content

Commit 8cc0f98

Browse files
committed
1 parent aed4cf3 commit 8cc0f98

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

src/ConstructionBase.jl

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -46,21 +46,25 @@ end
4646
################################################################################
4747
getfields(x::Tuple) = x
4848
getfields(x::NamedTuple) = x
49-
@generated function getfields(obj)
50-
fnames = fieldnames(obj)
51-
fvals = map(fnames) do fname
52-
Expr(:call, :getfield, :obj, QuoteNode(fname))
53-
end
54-
:(NamedTuple{$fnames}(($(fvals...),)))
55-
end
5649
getproperties(o::NamedTuple) = o
5750
getproperties(o::Tuple) = o
5851
if VERSION >= v"1.7"
5952
function getproperties(obj)
6053
fnames = propertynames(obj)
6154
NamedTuple{fnames}(getproperty.(Ref(obj), fnames))
6255
end
56+
function getfields(obj::T) where {T}
57+
fnames = fieldnames(T)
58+
NamedTuple{fnames}(getfield.(Ref(obj), fnames))
59+
end
6360
else
61+
@generated function getfields(obj)
62+
fnames = fieldnames(obj)
63+
fvals = map(fnames) do fname
64+
Expr(:call, :getfield, :obj, QuoteNode(fname))
65+
end
66+
:(NamedTuple{$fnames}(($(fvals...),)))
67+
end
6468
function getproperties(obj)
6569
check_properties_are_fields(obj)
6670
getfields(obj)

0 commit comments

Comments
 (0)