@@ -126,13 +126,12 @@ class FieldTypeMetadataBuilder : public ReflectionMetadataBuilder {
126
126
const uint32_t fieldRecordSize = 12 ;
127
127
ArrayRef<const NominalTypeDecl *> NominalTypeDecls;
128
128
129
- void addFieldDecl (const ValueDecl *value) {
129
+ void addFieldDecl (const ValueDecl *value, CanType type ) {
130
130
swift::reflection::FieldRecordFlags Flags;
131
131
Flags.setIsObjC (value->isObjC ());
132
132
133
133
addConstantInt32 (Flags.getRawValue ());
134
134
135
- auto type = value->getInterfaceType ()->getCanonicalType ();
136
135
addTypeRef (value->getModuleContext (), type);
137
136
138
137
if (IGM.Opts .StripReflectionNames ) {
@@ -155,7 +154,9 @@ class FieldTypeMetadataBuilder : public ReflectionMetadataBuilder {
155
154
addConstantInt32 (std::distance (properties.begin (), properties.end ()));
156
155
addConstantInt32 (fieldRecordSize);
157
156
for (auto property : properties)
158
- addFieldDecl (property);
157
+ addFieldDecl (property,
158
+ property->getInterfaceType ()
159
+ ->getCanonicalType ());
159
160
break ;
160
161
}
161
162
case DeclKind::Enum: {
@@ -164,7 +165,9 @@ class FieldTypeMetadataBuilder : public ReflectionMetadataBuilder {
164
165
addConstantInt32 (std::distance (cases.begin (), cases.end ()));
165
166
addConstantInt32 (fieldRecordSize);
166
167
for (auto enumCase : cases)
167
- addFieldDecl (enumCase);
168
+ addFieldDecl (enumCase,
169
+ enumCase->getArgumentInterfaceType ()
170
+ ->getCanonicalType ());
168
171
break ;
169
172
}
170
173
default :
0 commit comments