Skip to content

Commit e8120a6

Browse files
committed
AST: Rename ExtensionImportVisibility to MemberImportVisibility.
This feature controls lookup behavior for members in general, not just extension members. Resolves rdar://126491324
1 parent f7ea907 commit e8120a6

File tree

8 files changed

+20
-20
lines changed

8 files changed

+20
-20
lines changed

include/swift/Basic/Features.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,8 +364,8 @@ EXPERIMENTAL_FEATURE(ClosureIsolation, true)
364364
// Enable isolated(any) attribute on function types.
365365
CONDITIONALLY_SUPPRESSIBLE_EXPERIMENTAL_FEATURE(IsolatedAny, true)
366366

367-
// Whether members of extensions respect the enclosing file's imports.
368-
EXPERIMENTAL_FEATURE_EXCLUDED_FROM_MODULE_INTERFACE(ExtensionImportVisibility, true)
367+
// Whether lookup of members respects the enclosing file's imports.
368+
EXPERIMENTAL_FEATURE_EXCLUDED_FROM_MODULE_INTERFACE(MemberImportVisibility, true)
369369

370370
// Alias for IsolatedAny
371371
EXPERIMENTAL_FEATURE(IsolatedAny2, true)

lib/AST/FeatureSet.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ static bool usesFeatureIsolatedAny(Decl *decl) {
680680
});
681681
}
682682

683-
UNINTERESTING_FEATURE(ExtensionImportVisibility)
683+
UNINTERESTING_FEATURE(MemberImportVisibility)
684684
UNINTERESTING_FEATURE(IsolatedAny2)
685685

686686
UNINTERESTING_FEATURE(ObjCImplementation)

lib/AST/NameLookup.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2293,7 +2293,7 @@ static bool isAcceptableLookupResult(const DeclContext *dc,
22932293
// makes this decl visible.
22942294
if (decl->getDeclContext()->getParentModule() != dc->getParentModule() &&
22952295
dc->getASTContext().LangOpts.hasFeature(
2296-
Feature::ExtensionImportVisibility) &&
2296+
Feature::MemberImportVisibility) &&
22972297
!decl->findImport(dc))
22982298
return false;
22992299
}

test/NameLookup/Inputs/extensions_B.swift renamed to test/NameLookup/Inputs/members_B.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import extensions_A
1+
import members_A
22

33

44
extension X {

test/NameLookup/Inputs/extensions_C.swift renamed to test/NameLookup/Inputs/members_C.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
@_exported import extensions_A
2-
import extensions_B
1+
@_exported import members_A
2+
import members_B
33

44

55
extension X {

test/NameLookup/extensions_transitive.swift renamed to test/NameLookup/members_transitive.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
// RUN: %empty-directory(%t)
2-
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/extensions_A.swift
3-
// RUN: %target-swift-frontend -emit-module -I %t -o %t %S/Inputs/extensions_B.swift
4-
// RUN: %target-swift-frontend -emit-module -I %t -o %t %S/Inputs/extensions_C.swift
5-
// RUN: %target-swift-frontend -typecheck %s -I %t -verify -enable-experimental-feature ExtensionImportVisibility
2+
// RUN: %target-swift-frontend -emit-module -o %t %S/Inputs/members_A.swift
3+
// RUN: %target-swift-frontend -emit-module -I %t -o %t %S/Inputs/members_B.swift
4+
// RUN: %target-swift-frontend -emit-module -I %t -o %t %S/Inputs/members_C.swift
5+
// RUN: %target-swift-frontend -typecheck %s -I %t -verify -enable-experimental-feature MemberImportVisibility
66

7-
import extensions_C
8-
// expected-note 2{{add import of module 'extensions_B'}}{{1-1=import extensions_B\n}}
7+
import members_C
8+
// expected-note 2{{add import of module 'members_B'}}{{1-1=import members_B\n}}
99
func test(x: X, y: Y<Z>) {
10-
// Declared in extensions_A
10+
// Declared in members_A
1111
x.XinA()
1212
y.YinA()
1313
_ = x <<< x
1414
_ = y <<< y
1515

16-
// Declared in extensions_B
17-
x.XinB() // expected-error{{instance method 'XinB()' is not available due to missing import of defining module 'extensions_B'}}
18-
y.YinB() // expected-error{{instance method 'YinB()' is not available due to missing import of defining module 'extensions_B'}}
16+
// Declared in members_B
17+
x.XinB() // expected-error{{instance method 'XinB()' is not available due to missing import of defining module 'members_B'}}
18+
y.YinB() // expected-error{{instance method 'YinB()' is not available due to missing import of defining module 'members_B'}}
1919
_ = x >>> x // expected-error{{cannot find operator '>>>' in scope}}
2020
_ = y >>> y // expected-error{{cannot find operator '>>>' in scope}}
2121

22-
// Declared in extensions_C
22+
// Declared in members_C
2323
x.XinC()
2424
y.YinC()
2525
_ = x <> x

test/NameLookup/extensions_transitive_objc.swift renamed to test/NameLookup/members_transitive_objc.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// RUN: %target-swift-frontend -emit-module -I %t -I %S/Inputs/Categories -o %t %S/Inputs/Categories/Categories_B.swift
44
// RUN: %target-swift-frontend -emit-module -I %t -I %S/Inputs/Categories -o %t %S/Inputs/Categories/Categories_C.swift
55
// RUN: %target-swift-frontend -emit-module -I %t -I %S/Inputs/Categories -o %t %S/Inputs/Categories/Categories_E.swift
6-
// RUN: %target-swift-frontend -typecheck %s -I %t -I %S/Inputs/Categories -verify -enable-experimental-feature ExtensionImportVisibility
6+
// RUN: %target-swift-frontend -typecheck %s -I %t -I %S/Inputs/Categories -verify -enable-experimental-feature MemberImportVisibility
77

88
// REQUIRES: objc_interop
99

@@ -29,7 +29,7 @@ func testAnyObject(a: AnyObject) {
2929
a.fromOverlayForBObjC()
3030
// FIXME: Better diagnostics?
3131
// Name lookup for AnyObject already ignored transitive imports, so
32-
// ExtensionImportVisibility has no effect on these diagnostics.
32+
// `MemberImportVisibility` has no effect on these diagnostics.
3333
a.fromC() // expected-error {{value of type 'AnyObject' has no member 'fromC'}}
3434
a.fromOverlayForCObjC() // expected-error {{value of type 'AnyObject' has no member 'fromOverlayForCObjC'}}
3535
}

0 commit comments

Comments
 (0)