@@ -60,6 +60,7 @@ namespace {
60
60
class LookupResultBuilder {
61
61
LookupResult &Result;
62
62
DeclContext *DC;
63
+ Identifier ModuleSelector;
63
64
NameLookupOptions Options;
64
65
65
66
// / The vector of found declarations.
@@ -72,8 +73,9 @@ namespace {
72
73
73
74
public:
74
75
LookupResultBuilder (LookupResult &result, DeclContext *dc,
75
- NameLookupOptions options)
76
- : Result(result), DC(dc), Options(options) {
76
+ Identifier moduleSelector, NameLookupOptions options)
77
+ : Result(result), DC(dc), ModuleSelector(moduleSelector), Options(options)
78
+ {
77
79
if (dc->getASTContext ().isAccessControlDisabled ())
78
80
Options |= NameLookupFlags::IgnoreAccessControl;
79
81
}
@@ -83,6 +85,11 @@ namespace {
83
85
removeOverriddenDecls (FoundDecls);
84
86
removeOverriddenDecls (FoundOuterDecls);
85
87
88
+ // Remove any declarations excluded by the module selector from the
89
+ // found-declarations set.
90
+ removeOutOfModuleDecls (FoundDecls, ModuleSelector, DC);
91
+ removeOutOfModuleDecls (FoundOuterDecls, ModuleSelector, DC);
92
+
86
93
// Remove any shadowed declarations from the found-declarations set.
87
94
removeShadowedDecls (FoundDecls, DC);
88
95
removeShadowedDecls (FoundOuterDecls, DC);
@@ -290,7 +297,7 @@ LookupResult TypeChecker::lookupUnqualified(DeclContext *dc, DeclNameRef name,
290
297
UnqualifiedLookupRequest{descriptor}, {});
291
298
292
299
LookupResult result;
293
- LookupResultBuilder builder (result, dc, options);
300
+ LookupResultBuilder builder (result, dc, name. getModuleSelector (), options);
294
301
for (auto idx : indices (lookup.allResults ())) {
295
302
const auto &found = lookup[idx];
296
303
// Determine which type we looked through to find this result.
@@ -377,7 +384,7 @@ LookupResult TypeChecker::lookupMember(DeclContext *dc,
377
384
// Make sure we've resolved implicit members, if we need them.
378
385
namelookup::installSemanticMembersIfNeeded (type, name);
379
386
380
- LookupResultBuilder builder (result, dc, options);
387
+ LookupResultBuilder builder (result, dc, name. getModuleSelector (), options);
381
388
SmallVector<ValueDecl *, 4 > lookupResults;
382
389
dc->lookupQualified (type, name, loc, subOptions, lookupResults);
383
390
0 commit comments