Skip to content

Commit 6ea2dd8

Browse files
committed
AST/Sema: Remove code adding @_spi to suggested import fix-its.
The was never invoked because inaccessibility due to SPI protection level is always diagnosed before missing imports are diagnosed. The functionality could therefore not be tested and should be removed.
1 parent 31fe75b commit 6ea2dd8

File tree

6 files changed

+14
-24
lines changed

6 files changed

+14
-24
lines changed

lib/AST/DiagnosticEngine.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -361,17 +361,6 @@ InFlightDiagnostic &InFlightDiagnostic::fixItAddImport(StringRef ModuleName) {
361361

362362
if (bestLoc.isValid()) {
363363
llvm::SmallString<64> importText;
364-
365-
// @_spi imports.
366-
if (Member->isSPI()) {
367-
auto spiGroups = Member->getSPIGroups();
368-
if (!spiGroups.empty()) {
369-
importText += "@_spi(";
370-
importText += spiGroups[0].str();
371-
importText += ") ";
372-
}
373-
}
374-
375364
importText += "import ";
376365
importText += ModuleName;
377366
importText += "\n";

lib/Sema/TypeCheckNameLookup.cpp

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -940,8 +940,7 @@ diagnoseMissingImportsForMember(const ValueDecl *decl,
940940

941941
static void emitMissingImportFixIt(SourceLoc loc,
942942
const MissingImportFixItInfo &fixItInfo,
943-
const ValueDecl *decl) {
944-
ASTContext &ctx = decl->getASTContext();
943+
ASTContext &ctx) {
945944
llvm::SmallString<64> importText;
946945

947946
// Add flags that must be used consistently on every import in every file.
@@ -962,16 +961,6 @@ static void emitMissingImportFixIt(SourceLoc loc,
962961
importText += "@_spiOnly ";
963962
}
964963

965-
// Add @_spi groups if needed for the declaration.
966-
if (decl->isSPI()) {
967-
auto spiGroups = decl->getSPIGroups();
968-
if (!spiGroups.empty()) {
969-
importText += "@_spi(";
970-
importText += spiGroups[0].str();
971-
importText += ") ";
972-
}
973-
}
974-
975964
if (explicitAccessLevel) {
976965
importText += getAccessLevelSpelling(*explicitAccessLevel);
977966
importText += " ";
@@ -1006,7 +995,7 @@ diagnoseAndFixMissingImportForMember(const ValueDecl *decl, SourceFile *sf,
1006995
return;
1007996

1008997
for (auto &fixItInfo : fixItInfos) {
1009-
emitMissingImportFixIt(bestLoc, fixItInfo, decl);
998+
emitMissingImportFixIt(bestLoc, fixItInfo, ctx);
1010999
}
10111000
}
10121001

test/NameLookup/Inputs/MemberImportVisibility/members_A.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ infix operator <>
1717
extension X {
1818
public func XinA() { }
1919

20+
@_spi(A)
21+
public func XinA_spi() { }
22+
2023
public var propXinA: Bool { return true }
2124

2225
public static func <<<(a: Self, b: Self) -> Self { a }

test/NameLookup/Inputs/MemberImportVisibility/members_B.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ extension X {
55
public func XinB() { }
66
package func XinB_package() { }
77

8+
@_spi(B)
9+
public func XinB_spi() { }
10+
811
public var propXinB: Bool { return true }
912
package var propXinB_package: Bool { return true }
1013

test/NameLookup/Inputs/MemberImportVisibility/members_C.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ import members_B
55
extension X {
66
public func XinC() { }
77

8+
@_spi(C)
9+
public func XinC_spi() { }
10+
811
public var propXinC: Bool { return true }
912

1013
public static func <>(a: Self, b: Self) -> Self { a }

test/NameLookup/member_import_visibility.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,16 @@ import members_C
1414

1515
func testExtensionMembers(x: X, y: Y<Z>) {
1616
x.XinA()
17+
x.XinA_spi() // expected-error{{'XinA_spi' is inaccessible due to '@_spi' protection level}}
1718
y.YinA()
1819

1920
x.XinB() // expected-member-visibility-error{{instance method 'XinB()' is not available due to missing import of defining module 'members_B'}}
2021
x.XinB_package() // expected-member-visibility-error{{instance method 'XinB_package()' is not available due to missing import of defining module 'members_B'}}
22+
x.XinB_spi() // expected-error{{'XinB_spi' is inaccessible due to '@_spi' protection level}}
2123
y.YinB() // expected-member-visibility-error{{instance method 'YinB()' is not available due to missing import of defining module 'members_B'}}
2224

2325
x.XinC()
26+
x.XinC_spi() // expected-error{{'XinC_spi' is inaccessible due to '@_spi' protection level}}
2427
y.YinC()
2528

2629
_ = X(true)

0 commit comments

Comments
 (0)