ModuleInterface: Print existential any in swiftinterfaces since any is required for protocols with associated types in 5.7.

Resolves rdar://92976269
This commit is contained in:
Allan Shortlidge
2022-05-09 14:10:02 -07:00
parent 00423540f7
commit e0e748c35a
4 changed files with 40 additions and 2 deletions

View File

@@ -0,0 +1,37 @@
// RUN: %target-swift-emit-module-interface(%t.swiftinterface) %s -module-name main
// RUN: %target-swift-typecheck-module-from-interface(%t.swiftinterface) -module-name main
// RUN: %FileCheck %s < %t.swiftinterface
// CHECK: public protocol P
public protocol P { }
// CHECK: public protocol Q
public protocol Q {
// CHECK: associatedtype A : main.P
associatedtype A: P
}
// CHECK: public func takesAndReturnsP(_ x: any main.P) -> any main.P
public func takesAndReturnsP(_ x: P) -> P {
return x
}
// CHECK: public func takesAndReturnsOptionalP(_ x: (any main.P)?) -> (any main.P)?
public func takesAndReturnsOptionalP(_ x: P?) -> P? {
return x
}
// CHECK: public func takesAndReturnsQ(_ x: any main.Q) -> any main.Q
public func takesAndReturnsQ(_ x: any Q) -> any Q {
return x
}
// CHECK: public struct S
public struct S {
// CHECK: public var p: any main.P
public var p: P
// CHECK: public var maybeP: (any main.P)?
public var maybeP: P?
// CHECK: public var q: any main.Q
public var q: any Q
}