mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
I thought it would be useful to allow some uses of a module to be '@_implementationOnly' and others to not be in case someone wanted to change from one to the other gradually, but it turns out that if you're trying to /make/ an import implementation-only, you want to know everywhere you used it. rdar://problem/50748157
27 lines
1.2 KiB
Swift
27 lines
1.2 KiB
Swift
// RUN: %empty-directory(%t)
|
|
// RUN: %target-swift-frontend -emit-module -o %t/empty.swiftmodule %S/../Inputs/empty.swift
|
|
// RUN: %target-swift-frontend -typecheck -emit-parseable-module-interface-path - %s %S/Inputs/imports-other.swift -I %S/Inputs/imports-clang-modules/ -I %t -verify -swift-version 5 -enable-library-evolution | %FileCheck -implicit-check-not BAD %s
|
|
|
|
|
|
@_exported import empty
|
|
import B.B2
|
|
import func C.c // expected-warning {{scoped imports are not yet supported in module interfaces}}
|
|
import D
|
|
@_implementationOnly import Secret_BAD
|
|
|
|
@_implementationOnly import NotSoSecret // expected-note {{imported as implementation-only here}}
|
|
import NotSoSecret2 // expected-warning {{'NotSoSecret2' inconsistently imported as implementation-only}}
|
|
|
|
// CHECK-NOT: import
|
|
// CHECK: {{^}}import A{{$}}
|
|
// CHECK-NEXT: {{^}}import B{{$}}
|
|
// CHECK-NEXT: {{^}}import B.B2{{$}}
|
|
// CHECK-NEXT: {{^}}import B.B3{{$}}
|
|
// CHECK-NEXT: {{^}}import C/*.c*/{{$}}
|
|
// CHECK-NEXT: {{^}}import D{{$}}
|
|
// CHECK-NEXT: {{^}}import NotSoSecret{{$}}
|
|
// CHECK-NEXT: {{^}}import NotSoSecret2{{$}}
|
|
// CHECK-NEXT: {{^}}import Swift{{$}}
|
|
// CHECK-NEXT: {{^}}@_exported import empty{{$}}
|
|
// CHECK-NOT: import
|