Commits
Joe Groff committed 5744b57e8f4
SILGen: Handle an 'is T' pattern in a switch that introduces concrete-to-archetype casts.
When destructuring the 'is Int' pattern in:
func f<T, U>(t: T, u: U) {
switch t {
case is Int: println("Int")
case is U: println("U")
case _: println("other")
}
}
there is the possibility that 'U' is 'Int', so it needs to be included in the specialization on 'is Int' using a concrete-to-archetype cast from Int to U. This wasn't handled correctly and we tried to do a super-to-archetype class cast instead, which blew up because 'Int' is neither a class nor statically related to U. Fixes <rdar://problem/14826416>.
Swift SVN r9869