Files
swift-mirror/validation-test/compiler_crashers_2_fixed/0168-rdar40164371.swift
Slava Pestov 42a3ad3bf0 AST: Fix over-eager collapseSpecializedConformance()
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>.
2018-07-17 14:41:49 -07:00

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)
}