Skip to content

Commit a8a3c72

Browse files
authored
Merge pull request #14494 from DougGregor/lazy-name-lookup-sr-6834
[Name lookup] Fix an issue with lazy named member lookup.
2 parents f8c77e1 + 0547845 commit a8a3c72

File tree

4 files changed

+18
-4
lines changed

4 files changed

+18
-4
lines changed

lib/AST/NameLookup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1273,7 +1273,7 @@ static void populateLookupTableEntryFromCurrentMembersWithoutLoading(
12731273
IterableDeclContext *IDC) {
12741274
for (auto m : IDC->getCurrentMembersWithoutLoading()) {
12751275
if (auto v = dyn_cast<ValueDecl>(m)) {
1276-
if (v->getFullName().matchesRef(name)) {
1276+
if (v->getFullName().matchesRef(name.getBaseName())) {
12771277
LookupTable.addMember(m);
12781278
}
12791279
}

test/NameBinding/Inputs/NamedLazyMembers/NamedLazyMembers.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,8 @@
103103
- (void)doSomething:(double)x celsius:(double)y;
104104
- (void)doSomething:(double)x fahrenheit:(double)y using:(void (^)(void))block;
105105
@end
106+
107+
@interface SimpleDoerSubclass : SimpleDoer
108+
- (void)simplyDoSomeWorkWithSpeed:(int)s thoroughness:(int)t
109+
NS_SWIFT_NAME(simplyDoVeryImportantWork(speed:thoroughness:));
110+
@end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import NamedLazyMembers
2+
3+
extension SimpleDoer {
4+
func simplyDoVeryImportantWork(speed: Int, motivation: Int) { }
5+
}

test/NameBinding/named_lazy_member_loading_objc_interface.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,19 @@
33
// RUN: rm -rf %t && mkdir -p %t/stats-pre && mkdir -p %t/stats-post
44
//
55
// Prime module cache
6-
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -typecheck %s
6+
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -typecheck -primary-file %s %S/Inputs/NamedLazyMembers/NamedLazyMembersExt.swift
77
//
88
// Check that named-lazy-member-loading reduces the number of Decls deserialized
9-
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -disable-named-lazy-member-loading -stats-output-dir %t/stats-pre %s
10-
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -stats-output-dir %t/stats-post %s
9+
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -disable-named-lazy-member-loading -stats-output-dir %t/stats-pre -primary-file %s %S/Inputs/NamedLazyMembers/NamedLazyMembersExt.swift
10+
// RUN: %target-swift-frontend -typecheck -I %S/Inputs/NamedLazyMembers -stats-output-dir %t/stats-post -primary-file %s %S/Inputs/NamedLazyMembers/NamedLazyMembersExt.swift
1111
// RUN: %utils/process-stats-dir.py --evaluate-delta 'NumTotalClangImportedEntities < -10' %t/stats-pre %t/stats-post
1212

1313
import NamedLazyMembers
1414

15+
public func bar(d: SimpleDoerSubclass) {
16+
let _ = d.simplyDoVeryImportantWork(speed: 10, motivation: 42)
17+
}
18+
1519
public func foo(d: SimpleDoer) {
1620
let _ = d.simplyDoSomeWork()
1721
let _ = d.simplyDoSomeWork(withSpeed:10)

0 commit comments

Comments
 (0)