@@ -77,16 +77,6 @@ backing(x::Tuple) = x
7777backing (x:: NamedTuple ) = x
7878backing (x:: Composite ) = getfield (x, :backing )
7979
80- function backing (x):: NamedTuple
81-
82-
83- else
84- ! isstructtype (x) && throw (DomainError (x, " backing can only be use on composite types" ))
85- nfields = fieldcount (x)
86- names = ntuple (ii-> fieldname (x, ii), nfields)
87- types = ntuple (ii-> fieldtype (x, ii), nfields)
88-
89- end
9080
9181function backing (x:: T ):: NamedTuple where T
9282 # note: all computation outside the if @generated happens at runtime.
@@ -95,16 +85,16 @@ function backing(x::T)::NamedTuple where T
9585 if @generated
9686 ! isstructtype (T) && throw (DomainError (T, " backing can only be use on composite types" ))
9787 nfields = fieldcount (T)
98- names = ntuple (ii -> fieldname (T, ii), nfields )
99- types = ntuple (ii -> fieldtype (T, ii), nfields )
88+ names = fieldnames (T )
89+ types = fieldtypes (T )
10090
10191 vals = Expr (:tuple , ntuple (ii-> :(getfield (x, $ ii)), nfields)... )
10292 return :(NamedTuple {$names, Tuple{$(types...)}} ($ vals))
10393 else
10494 ! isstructtype (T) && throw (DomainError (T, " backing can only be use on composite types" ))
10595 nfields = fieldcount (T)
106- names = ntuple (ii -> fieldname (T, ii), nfields )
107- types = ntuple (ii -> fieldtype (T, ii), nfields )
96+ names = fieldnames (T )
97+ types = fieldtypes (T )
10898
10999 vals = ntuple (ii-> getfield (x, ii), nfields)
110100 return NamedTuple {names, Tuple{types...}} (vals)
0 commit comments