@@ -3258,6 +3258,18 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
3258
3258
}
3259
3259
}
3260
3260
3261
+ size_t addConformances (const IterableDeclContext *declContext,
3262
+ ConformanceLookupKind lookupKind,
3263
+ SmallVectorImpl<TypeID> &data) {
3264
+ size_t count = 0 ;
3265
+ for (auto conformance : declContext->getLocalConformances (lookupKind)) {
3266
+ data.push_back (S.addConformanceRef (conformance));
3267
+ count++;
3268
+ }
3269
+
3270
+ return count;
3271
+ }
3272
+
3261
3273
public:
3262
3274
// / Determine if \p decl is safe to deserialize when it's public
3263
3275
// / or otherwise needed by the client in normal builds, this should usually
@@ -3785,8 +3797,8 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
3785
3797
// / Add all of the inherited entries to the result vector.
3786
3798
// /
3787
3799
// / \returns the number of entries added.
3788
- unsigned addInherited (ArrayRef<InheritedEntry> inheritedEntries,
3789
- SmallVectorImpl<TypeID> &result) {
3800
+ size_t addInherited (ArrayRef<InheritedEntry> inheritedEntries,
3801
+ SmallVectorImpl<TypeID> &result) {
3790
3802
for (const auto &inherited : inheritedEntries) {
3791
3803
assert (!inherited.getType () || !inherited.getType ()->hasArchetype ());
3792
3804
TypeID typeRef = S.addTypeRef (inherited.getType ());
@@ -3819,13 +3831,9 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
3819
3831
// simpler user model to just always desugar extension types.
3820
3832
extendedType = extendedType->getCanonicalType ();
3821
3833
3822
- auto conformances = extension->getLocalConformances (
3823
- ConformanceLookupKind::All);
3824
-
3825
3834
SmallVector<TypeID, 8 > data;
3826
- for (auto conformance : conformances)
3827
- data.push_back (S.addConformanceRef (conformance));
3828
-
3835
+ size_t numConformances =
3836
+ addConformances (extension, ConformanceLookupKind::All, data);
3829
3837
size_t numInherited = addInherited (
3830
3838
extension->getInherited (), data);
3831
3839
@@ -3848,7 +3856,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
3848
3856
extension->isImplicit (),
3849
3857
S.addGenericSignatureRef (
3850
3858
extension->getGenericSignature ()),
3851
- conformances. size () ,
3859
+ numConformances ,
3852
3860
numInherited,
3853
3861
data);
3854
3862
@@ -4052,14 +4060,10 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4052
4060
4053
4061
auto contextID = S.addDeclContextRef (theStruct->getDeclContext ());
4054
4062
4055
- auto conformances = theStruct->getLocalConformances (
4056
- ConformanceLookupKind::All);
4057
-
4058
4063
SmallVector<TypeID, 4 > data;
4059
- for (auto conformance : conformances)
4060
- data.push_back (S.addConformanceRef (conformance));
4061
-
4062
- unsigned numInherited = addInherited (theStruct->getInherited (), data);
4064
+ size_t numConformances =
4065
+ addConformances (theStruct, ConformanceLookupKind::All, data);
4066
+ size_t numInherited = addInherited (theStruct->getInherited (), data);
4063
4067
4064
4068
llvm::SmallSetVector<Type, 4 > dependencyTypes;
4065
4069
for (Requirement req : theStruct->getGenericRequirements ()) {
@@ -4081,7 +4085,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4081
4085
S.addGenericSignatureRef (
4082
4086
theStruct->getGenericSignature ()),
4083
4087
rawAccessLevel,
4084
- conformances. size () ,
4088
+ numConformances ,
4085
4089
numInherited,
4086
4090
data);
4087
4091
@@ -4096,14 +4100,10 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4096
4100
4097
4101
auto contextID = S.addDeclContextRef (theEnum->getDeclContext ());
4098
4102
4099
- auto conformances = theEnum->getLocalConformances (
4100
- ConformanceLookupKind::All);
4101
-
4102
4103
SmallVector<TypeID, 4 > data;
4103
- for (auto conformance : conformances)
4104
- data.push_back (S.addConformanceRef (conformance));
4105
-
4106
- unsigned numInherited = addInherited (theEnum->getInherited (), data);
4104
+ size_t numConformances =
4105
+ addConformances (theEnum, ConformanceLookupKind::All, data);
4106
+ size_t numInherited = addInherited (theEnum->getInherited (), data);
4107
4107
4108
4108
llvm::SmallSetVector<Type, 4 > dependencyTypes;
4109
4109
for (const EnumElementDecl *nextElt : theEnum->getAllElements ()) {
@@ -4138,7 +4138,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4138
4138
theEnum->getGenericSignature ()),
4139
4139
S.addTypeRef (theEnum->getRawType ()),
4140
4140
rawAccessLevel,
4141
- conformances. size () ,
4141
+ numConformances ,
4142
4142
numInherited,
4143
4143
data);
4144
4144
@@ -4153,14 +4153,10 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4153
4153
4154
4154
auto contextID = S.addDeclContextRef (theClass->getDeclContext ());
4155
4155
4156
- auto conformances = theClass->getLocalConformances (
4157
- ConformanceLookupKind::NonInherited);
4158
-
4159
4156
SmallVector<TypeID, 4 > data;
4160
- for (auto conformance : conformances)
4161
- data.push_back (S.addConformanceRef (conformance));
4162
-
4163
- unsigned numInherited = addInherited (theClass->getInherited (), data);
4157
+ size_t numConformances =
4158
+ addConformances (theClass, ConformanceLookupKind::NonInherited, data);
4159
+ size_t numInherited = addInherited (theClass->getInherited (), data);
4164
4160
4165
4161
llvm::SmallSetVector<Type, 4 > dependencyTypes;
4166
4162
if (theClass->hasSuperclass ()) {
@@ -4197,7 +4193,7 @@ class Serializer::DeclSerializer : public DeclVisitor<DeclSerializer> {
4197
4193
theClass->getGenericSignature ()),
4198
4194
S.addTypeRef (theClass->getSuperclass ()),
4199
4195
rawAccessLevel,
4200
- conformances. size () ,
4196
+ numConformances ,
4201
4197
numInherited,
4202
4198
data);
4203
4199
0 commit comments