mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
It's possible that the conforming type is equal to the generic conformance type, but some of the substitutions replace an abstract conformance with a concrete one. In this case we cannot collapse away the specialized conformance, because we lose information that way. Fixes <rdar://problem/40164371>.
45 lines
602 B
Swift
45 lines
602 B
Swift
// RUN: %target-swift-frontend -emit-sil %s
|
|
|
|
protocol X1 {
|
|
associatedtype X3 : X4
|
|
}
|
|
|
|
protocol X4 {
|
|
associatedtype X15
|
|
}
|
|
|
|
protocol X7 { }
|
|
|
|
protocol X9 : X7 {
|
|
associatedtype X10 : X7
|
|
}
|
|
|
|
struct X12 : X9 {
|
|
typealias X10 = X12
|
|
}
|
|
|
|
struct X13<I1 : X7> : X9 {
|
|
typealias X10 = X13<I1>
|
|
}
|
|
|
|
struct X14<G : X4> : X4 where G.X15 : X9 {
|
|
typealias X15 = X13<G.X15.X10>
|
|
}
|
|
|
|
struct X17<A : X4> : X1 where A.X15 == X12 {
|
|
typealias X3 = X14<A>
|
|
}
|
|
|
|
struct X18 : X4 {
|
|
typealias X15 = X12
|
|
}
|
|
|
|
@_transparent
|
|
func callee<T>(_: T) where T : X1 {
|
|
let _: T.X3.X15? = nil
|
|
}
|
|
|
|
func caller(b: X17<X18>) {
|
|
callee(b)
|
|
}
|