-
Notifications
You must be signed in to change notification settings - Fork 10.5k
/
Copy pathcross_module_optional_protocol_reqt.swift
29 lines (22 loc) · 1.56 KB
/
cross_module_optional_protocol_reqt.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
// RUN: %empty-directory(%t)
// RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -c -emit-module-path %t/cross_module_optional_protocol_reqt~partial.swiftmodule -primary-file %s %S/Inputs/cross_module_optional_protocol_reqt_2.swift -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h -o /dev/null
// RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -c -emit-module-path %t/cross_module_optional_protocol_reqt_2~partial.swiftmodule %s -primary-file %S/Inputs/cross_module_optional_protocol_reqt_2.swift -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h -o /dev/null
// RUN: %target-swift-frontend -module-name cross_module_optional_protocol_reqt -emit-module -emit-module-path %t/cross_module_optional_protocol_reqt.swiftmodule %t/cross_module_optional_protocol_reqt~partial.swiftmodule %t/cross_module_optional_protocol_reqt_2~partial.swiftmodule -import-objc-header %S/Inputs/cross_module_optional_protocol_reqt.h
// RUN: %target-swift-frontend -I %t -typecheck %s -DTEST -module-name main
// REQUIRES: objc_interop
#if TEST
import cross_module_optional_protocol_reqt
func test(_ foo: Foo) {
// At one point this forced deserialization of the conformance to ObjCProto,
// which was corrupted by the presence of the optional requirement with no
// witness.
foo.nonoptionalMethod()
foo.nonoptionalMethod2()
}
#else // TEST
public protocol SwiftProto: ObjCProto {}
public class Foo: ObjCFoo, SwiftProto {
public func nonoptionalMethod() {}
public func nonoptionalMethod2() {}
}
#endif // TEST