forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccess-level-import-inconsistencies.swift
66 lines (56 loc) · 2.53 KB
/
access-level-import-inconsistencies.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/// Import inconsistencies.
///
/// Swift 5 case, with slow adoption of access level on imports.
/// Report default imports if any other import of the same module
/// has an access level below public (the default).
///
/// Swift 6 case, with default imports as internal.
/// Don't report any mismatch.
// RUN: %empty-directory(%t)
// RUN: split-file %s %t
// REQUIRES: asserts
/// Build the library.
// RUN: %target-swift-frontend -emit-module %t/Lib.swift -o %t
/// Check diagnostics.
//--- Lib.swift
public struct LibType {}
// RUN: %target-swift-frontend -typecheck %t/OneFile_AllExplicit.swift -I %t \
// RUN: -enable-experimental-feature AccessLevelOnImport -verify
//--- OneFile_AllExplicit.swift
public import Lib
package import Lib
internal import Lib
fileprivate import Lib
private import Lib
// RUN: %target-swift-frontend -typecheck %t/ManyFiles_AllExplicit_File?.swift -I %t \
// RUN: -enable-experimental-feature AccessLevelOnImport -verify
//--- ManyFiles_AllExplicit_FileA.swift
public import Lib
//--- ManyFiles_AllExplicit_FileB.swift
package import Lib
//--- ManyFiles_AllExplicit_FileC.swift
internal import Lib
//--- ManyFiles_AllExplicit_FileD.swift
fileprivate import Lib
//--- ManyFiles_AllExplicit_FileE.swift
private import Lib
// RUN: %target-swift-frontend -typecheck %t/ManyFiles_ImplicitVsInternal_FileB.swift -I %t \
// RUN: -enable-experimental-feature AccessLevelOnImport -verify \
// RUN: -primary-file %t/ManyFiles_ImplicitVsInternal_FileA.swift
//--- ManyFiles_ImplicitVsInternal_FileA.swift
import Lib // expected-error {{ambiguous implicit access level for import of 'Lib'; it is imported as 'internal' elsewhere}}
//--- ManyFiles_ImplicitVsInternal_FileB.swift
internal import Lib // expected-note {{imported 'internal' here}}
// RUN: %target-swift-frontend -typecheck %t/ManyFiles_ImplicitVsPackage_FileB.swift -I %t \
// RUN: -enable-experimental-feature AccessLevelOnImport -verify \
// RUN: -primary-file %t/ManyFiles_ImplicitVsPackage_FileA.swift
//--- ManyFiles_ImplicitVsPackage_FileA.swift
import Lib // expected-error {{ambiguous implicit access level for import of 'Lib'; it is imported as 'package' elsewhere}}
//--- ManyFiles_ImplicitVsPackage_FileB.swift
package import Lib // expected-note {{imported 'package' here}} @:1
// RUN: %target-swift-frontend -typecheck %t/ManyFiles_AmbiguitySwift6_File?.swift -I %t \
// RUN: -enable-experimental-feature AccessLevelOnImport -verify -swift-version 6
//--- ManyFiles_AmbiguitySwift6_FileA.swift
import Lib
//--- ManyFiles_AmbiguitySwift6_FileB.swift
internal import Lib