-
Notifications
You must be signed in to change notification settings - Fork 10.4k
/
Copy pathempty-extension.swift
66 lines (47 loc) · 1.57 KB
/
empty-extension.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
// Test that we don't print extensions to implementation-only imported types.
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -emit-module %s -DIOI_LIB -module-name IOILib -emit-module-path %t/IOILib.swiftmodule
// RUN: %target-swift-frontend -emit-module %s -DEXPORTED_LIB -module-name IndirectLib -emit-module-path %t/IndirectLib.swiftmodule -I %t
// RUN: %target-swift-frontend -emit-module %s -DLIB -module-name Lib -emit-module-path %t/Lib.swiftmodule -I %t
// RUN: %target-swift-emit-module-interface(%t/out.swiftinterface) %s -I %t -module-name Test
// RUN: %target-swift-typecheck-module-from-interface(%t/out.swiftinterface) -I %t -module-name Test
// RUN: %FileCheck %s < %t/out.swiftinterface
// REQUIRES: OS=macosx
#if IOI_LIB
public struct IOIImportedType {
public func foo() {}
}
#elseif EXPORTED_LIB
public struct ExportedType {
public func foo() {}
}
#elseif LIB
@_exported import IndirectLib
public struct NormalImportedType {
public func foo() {}
}
#else // Client
import Lib
@_implementationOnly import IOILib
public protocol PublicProto {
func foo()
}
extension IOIImportedType : PublicProto {}
extension IOIImportedType {
#if os(iOS)
public func funcForAnotherOS() {}
#endif
}
// CHECK-NOT: IOIImportedType
// CHECK-NOT: funcForAnotherOS
extension NormalImportedType : PublicProto {}
// CHECK: extension Lib.NormalImportedType
extension ExportedType : PublicProto {}
// CHECK: extension IndirectLib.ExportedType
extension NormalImportedType {
#if os(macOS)
public func funcForThisOS() {};
#endif
}
// CHECK: funcForThisOS
#endif