blob: 3fb77527e3a2e084e576466c4bd21d3a4cc61634 [file] [log] [blame]
// RUN: %target-swift-frontend -Onone -g -emit-ir %s -o /dev/null
// Check that the compiler does not crash when trying to mangle and re-mangle
// the typealiases for debug info.
public struct Mystruct<T> {
func testit<U, V>(x: T, u: U, v: V) {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(x, to: Myalias.self)
}
func testit2(x: T) {
typealias Myalias = Array<T>
let newAnyObject = unsafeBitCast(x, to: Myalias.self)
}
func testit3() -> Int {
let c: () -> Int = {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(self.t, to: Myalias.self)
return 0
}
return c()
}
var t: T {
didSet {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
}
willSet {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
}
}
var abc: Int {
get {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
return 0
}
set {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
}
}
init(x: T) {
t = x
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(x, to: Myalias.self)
}
init<U>(x: T, u: U) {
t = x
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(x, to: Myalias.self)
}
var def: Int {
return {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
return 0
}()
}
subscript(_ i: Int) -> Int {
get {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
return 0
}
set {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
}
}
func foo() {
typealias Myalias<T: Hashable> = Dictionary<T, T>
let newAnyObject = unsafeBitCast(t, to: Myalias<Int>.self)
}
}
public class Myclass<T> {
var t: T
init(x: T) {
t = x
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(x, to: Myalias.self)
}
deinit {
typealias Myalias = AnyObject
let newAnyObject = unsafeBitCast(t, to: Myalias.self)
}
}