@@ -1272,24 +1272,27 @@ class swift::MemberLookupTable : public ASTAllocated<swift::MemberLookupTable> {
1272
1272
if (LazyMacroExpansionState.ComputedContainersWithMacroExpansions )
1273
1273
return LazyMacroExpansionState.ContainersWithMacroExpansions ;
1274
1274
1275
- Evaluator &evaluator = nominal-> getASTContext (). evaluator ;
1275
+ LazyMacroExpansionState. ComputedContainersWithMacroExpansions = true ;
1276
1276
1277
1277
// Does the type have macro expansions?
1278
- if (evaluateOrDefault (
1279
- evaluator, PotentialMacroExpansionsInContextRequest{nominal}, {}))
1280
- LazyMacroExpansionState.ContainersWithMacroExpansions .push_back (nominal);
1278
+ addContainerWithMacroExpansions (nominal);
1281
1279
1282
1280
// Check each extension for macro expansions.
1283
- for (auto ext : nominal->getExtensions ()) {
1284
- if (evaluateOrDefault (
1285
- evaluator, PotentialMacroExpansionsInContextRequest{ext}, {}))
1286
- LazyMacroExpansionState.ContainersWithMacroExpansions .push_back (ext);
1287
- }
1281
+ for (auto ext : nominal->getExtensions ())
1282
+ addContainerWithMacroExpansions (ext);
1288
1283
1289
- LazyMacroExpansionState.ComputedContainersWithMacroExpansions = true ;
1290
1284
return LazyMacroExpansionState.ContainersWithMacroExpansions ;
1291
1285
}
1292
1286
1287
+ void addContainerWithMacroExpansions (TypeOrExtensionDecl container){
1288
+ if (LazyMacroExpansionState.ComputedContainersWithMacroExpansions &&
1289
+ evaluateOrDefault (
1290
+ container.getAsDecl ()->getASTContext ().evaluator ,
1291
+ PotentialMacroExpansionsInContextRequest{container}, {}))
1292
+ LazyMacroExpansionState.ContainersWithMacroExpansions .push_back (
1293
+ container);
1294
+ }
1295
+
1293
1296
// / Determine whether the given container has any macro-introduced names that
1294
1297
// / match the given declaration.
1295
1298
bool hasAnyMacroNamesMatching (TypeOrExtensionDecl container, DeclName name);
@@ -1439,6 +1442,8 @@ void NominalTypeDecl::addedExtension(ExtensionDecl *ext) {
1439
1442
} else {
1440
1443
table->addMembers (ext->getMembers ());
1441
1444
}
1445
+
1446
+ table->addContainerWithMacroExpansions (ext);
1442
1447
}
1443
1448
1444
1449
void NominalTypeDecl::addedMember (Decl *member) {
0 commit comments