@@ -77,16 +77,6 @@ backing(x::Tuple) = x
77
77
backing (x:: NamedTuple ) = x
78
78
backing (x:: Composite ) = getfield (x, :backing )
79
79
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
90
80
91
81
function backing (x:: T ):: NamedTuple where T
92
82
# note: all computation outside the if @generated happens at runtime.
@@ -95,16 +85,16 @@ function backing(x::T)::NamedTuple where T
95
85
if @generated
96
86
! isstructtype (T) && throw (DomainError (T, " backing can only be use on composite types" ))
97
87
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 )
100
90
101
91
vals = Expr (:tuple , ntuple (ii-> :(getfield (x, $ ii)), nfields)... )
102
92
return :(NamedTuple {$names, Tuple{$(types...)}} ($ vals))
103
93
else
104
94
! isstructtype (T) && throw (DomainError (T, " backing can only be use on composite types" ))
105
95
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 )
108
98
109
99
vals = ntuple (ii-> getfield (x, ii), nfields)
110
100
return NamedTuple {names, Tuple{types...}} (vals)
0 commit comments