Skip to content

Commit 3d611e2

Browse files
committed
Sema: Simplify warning about @_implementationOnly being deprecated
1 parent 0a25248 commit 3d611e2

17 files changed

+30
-43
lines changed

include/swift/AST/DiagnosticsSema.def

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1167,13 +1167,8 @@ WARNING(implementation_only_requires_library_evolution,none,
11671167
"using '@_implementationOnly' without enabling library evolution "
11681168
"for %0 may lead to instability during execution",
11691169
(Identifier))
1170-
WARNING(implementation_only_deprecated_explicit,none,
1171-
"'@_implementationOnly' is deprecated, use 'internal import' "
1172-
"and family instead",
1173-
())
1174-
WARNING(implementation_only_deprecated_implicit,none,
1175-
"'@_implementationOnly' is deprecated, use a bare import "
1176-
"as 'InternalImportsByDefault' is enabled",
1170+
WARNING(implementation_only_deprecated,none,
1171+
"'@_implementationOnly' is deprecated, use 'internal import' instead",
11771172
())
11781173

11791174
ERROR(module_allowable_client_violation,none,

lib/Sema/ImportResolution.cpp

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -816,17 +816,10 @@ void UnboundImport::validateResilience(NullablePtr<ModuleDecl> topLevelModule,
816816
import.implementationOnlyRange.isValid()) {
817817
if (SF.getParentModule()->isResilient()) {
818818
// Encourage replacing `@_implementationOnly` with `internal import`.
819-
if (ctx.LangOpts.hasFeature(Feature::InternalImportsByDefault)) {
820-
auto inFlight =
821-
ctx.Diags.diagnose(import.importLoc,
822-
diag::implementation_only_deprecated_implicit);
823-
inFlight.fixItRemove(import.implementationOnlyRange);
824-
} else {
825-
auto inFlight =
826-
ctx.Diags.diagnose(import.importLoc,
827-
diag::implementation_only_deprecated_explicit);
828-
inFlight.fixItReplace(import.implementationOnlyRange, "internal");
829-
}
819+
auto inFlight =
820+
ctx.Diags.diagnose(import.importLoc,
821+
diag::implementation_only_deprecated);
822+
inFlight.fixItReplace(import.implementationOnlyRange, "internal");
830823
} else if ( // Non-resilient
831824
!(((targetName.str() == "CCryptoBoringSSL" ||
832825
targetName.str() == "CCryptoBoringSSLShims") &&

test/Concurrency/preconcurrency_implementationonly_override.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
// REQUIRES: asserts
1212

1313
@_implementationOnly import ImplementationOnlyDefs
14-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
14+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1515

1616
class D: C {
1717
@_implementationOnly

test/SPI/implementation_only_spi_import_exposability.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public protocol IOIProtocol {}
2727
#elseif CLIENT
2828

2929
@_spi(A) @_implementationOnly import Lib
30-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
30+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
3131

3232
@_spi(B) public func leakSPIStruct(_ a: SPIStruct) -> SPIStruct { fatalError() } // expected-warning 2 {{cannot use struct 'SPIStruct' here; 'Lib' has been imported as implementation-only}}
3333
@_spi(B) public func leakIOIStruct(_ a: IOIStruct) -> IOIStruct { fatalError() } // expected-warning 2 {{cannot use struct 'IOIStruct' here; 'Lib' has been imported as implementation-only}}

test/SPI/report-ioi-in-spi.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public struct IOIStruct {
2626
//--- ClientSPIOnlyMode.swift
2727

2828
@_implementationOnly import Lib
29-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
29+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
3030

3131
@_spi(X) public func spiClient(s: IOIStruct) -> IOIStruct { // expected-error 2 {{cannot use struct 'IOIStruct' here; 'Lib' has been imported as implementation-only}}
3232
return IOIStruct()
@@ -40,7 +40,7 @@ public struct IOIStruct {
4040
//--- ClientDefaultMode.swift
4141

4242
@_implementationOnly import Lib
43-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
43+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
4444

4545
@_spi(X) public func spiClient(s: IOIStruct) -> IOIStruct { // expected-warning 2 {{cannot use struct 'IOIStruct' here; 'Lib' has been imported as implementation-only}}
4646
return IOIStruct()

test/SPI/spi-only-import-conflicting.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,15 @@ import Lib // expected-error {{'Lib' inconsistently imported for SPI only}}
6060
// expected-warning @-1 {{'Lib' inconsistently imported as implementation-only}}
6161
@_implementationOnly import Lib // expected-error {{'Lib' inconsistently imported for SPI only}}
6262
// expected-note @-1 {{imported as implementation-only here}}
63-
// expected-warning @-2 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
63+
// expected-warning @-2 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
6464

6565
/// Many confliciting imports lead to many diagnostics.
6666
//--- SPIOnly_IOI_Exported_Default.swift
6767
@_spiOnly import Lib // expected-note 3 {{imported for SPI only here}}
6868
// expected-warning @-1 {{'Lib' inconsistently imported as implementation-only}}
6969
@_implementationOnly import Lib // expected-error {{'Lib' inconsistently imported for SPI only}}
7070
// expected-note @-1 3 {{imported as implementation-only here}}
71-
// expected-warning @-2 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
71+
// expected-warning @-2 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
7272
@_exported import Lib // expected-error {{'Lib' inconsistently imported for SPI only}}
7373
// expected-warning @-1 {{'Lib' inconsistently imported as implementation-only}}
7474
import Lib // expected-error {{'Lib' inconsistently imported for SPI only}}
@@ -84,7 +84,7 @@ import Lib
8484
/// Different IOI in different files of the same module are still rejected.
8585
//--- IOI_Default_FileA.swift
8686
@_implementationOnly import Lib // expected-note {{imported as implementation-only here}}
87-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
87+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
8888

8989
//--- IOI_Default_FileB.swift
9090
import Lib // expected-warning {{'Lib' inconsistently imported as implementation-only}}

test/Sema/implementation-only-deprecated.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,17 @@
66
// RUN: -emit-module-path %t/Lib.swiftmodule
77
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
88
// RUN: -enable-library-evolution -swift-version 5 \
9-
// RUN: -verify -verify-additional-prefix swift-5-
9+
// RUN: -verify
1010
// RUN: %target-swift-frontend -typecheck %t/Client.swift -I %t \
1111
// RUN: -enable-library-evolution -swift-version 5 \
1212
// RUN: -enable-upcoming-feature InternalImportsByDefault \
13-
// RUN: -verify -verify-additional-prefix default-to-internal-
13+
// RUN: -verify
1414

1515
//--- Lib.swift
1616
public struct SomeType {}
1717

1818
//--- Client.swift
1919
@_implementationOnly import Lib
20-
// expected-swift-5-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}} {{1-21=internal}}
21-
// expected-default-to-internal-warning @-2 {{'@_implementationOnly' is deprecated, use a bare import as 'InternalImportsByDefault' is enabled}} {{1-22=}}
20+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}} {{1-21=internal}}
2221

2322
internal func foo(_: SomeType) {}

test/Sema/implementation-only-import-from-non-resilient.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import B
2727

2828
//--- client-resilient.swift
2929
@_implementationOnly import A
30-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
30+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
3131
import B
3232

3333
//--- Crypto.swift

test/Sema/implementation-only-import-in-decls.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import NormalLibrary
1111
@_implementationOnly import BADLibrary
12-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
12+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1313

1414
public struct TestConformance: BadProto {} // expected-error {{cannot use protocol 'BadProto' here; 'BADLibrary' has been imported as implementation-only}}
1515

test/Sema/implementation-only-import-inlinable-conformances.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
// RUN: %target-typecheck-verify-swift -I %t -enable-library-evolution -swift-version 5
88

99
@_implementationOnly import BADLibrary
10-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
10+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1111
import NormalLibrary
1212

1313
@available(*, unavailable)

test/Sema/implementation-only-import-inlinable-indirect.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// RUN: -enable-library-evolution -swift-version 5
99

1010
@_implementationOnly import directs
11-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
11+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1212

1313
// Types
1414

test/Sema/implementation-only-import-inlinable-multifile.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// RUN: -enable-library-evolution -swift-version 5
99

1010
@_implementationOnly import directs
11-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
11+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1212
// 'indirects' is imported for re-export in a secondary file
1313

1414
// Types

test/Sema/implementation-only-import-inlinable.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
// RUN: -enable-library-evolution -swift-version 5
99

1010
@_implementationOnly import directs
11-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
11+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
1212
import indirects
1313

1414
// Types

test/Sema/implementation-only-import-library-evolution.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// RUN: %target-typecheck-verify-swift -I %t -enable-library-evolution
66

77
@_implementationOnly import BADLibrary
8-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
8+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
99

1010
public struct PublicStructStoredProperties {
1111
public var publiclyBad: BadStruct? // expected-error {{cannot use struct 'BadStruct' here; 'BADLibrary' has been imported as implementation-only}}

test/Sema/missing-import-inlinable-code.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ public import libA
7575
// BEGIN clientFileA-OldCheck.swift
7676
public import libA
7777
@_implementationOnly import empty
78-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
78+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
7979

8080
@inlinable public func bar() {
8181
let a = ImportedType()
@@ -103,7 +103,7 @@ public import libA
103103

104104
// BEGIN clientFileB.swift
105105
@_implementationOnly import libB
106-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
106+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
107107
public import libA
108108
extension ImportedType {
109109
public func localModuleMethod() {}

test/Sema/missing-import-typealias.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ extension StructAlias {
9797

9898
import Aliases
9999
@_implementationOnly import Original
100-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
100+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
101101

102102
@inlinable public func inlinableFunc() {
103103
// expected-warning@+1 {{'StructAlias' aliases 'Original.Struct' and cannot be used in an '@inlinable' function because 'Original' has been imported as implementation-only; this is an error in the Swift 6 language mode}}

test/Sema/restricted-imports-priorities.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,22 +45,22 @@ public struct LibAStruct {}
4545

4646
//--- TwoIOI.swift
4747
@_implementationOnly import LibB
48-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
48+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
4949
@_implementationOnly import LibC
50-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
50+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
5151

5252
public func foo(a: LibAStruct) {} // expected-error {{cannot use struct 'LibAStruct' here; 'LibA' has been imported as implementation-only}}
5353

5454
//--- SPIOnlyAndIOI1.swift
5555
@_spiOnly import LibB
5656
@_implementationOnly import LibC
57-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
57+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
5858

5959
public func foo(a: LibAStruct) {} // expected-error {{cannot use struct 'LibAStruct' here; 'LibA' was imported for SPI only}}
6060

6161
//--- SPIOnlyAndIOI2.swift
6262
@_implementationOnly import LibB
63-
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' and family instead}}
63+
// expected-warning @-1 {{'@_implementationOnly' is deprecated, use 'internal import' instead}}
6464
@_spiOnly import LibC
6565

6666
public func foo(a: LibAStruct) {} // expected-error {{cannot use struct 'LibAStruct' here; 'LibA' was imported for SPI only}}

0 commit comments

Comments
 (0)