1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
// RUN: %target-run-simple-swift | %FileCheck %s
// REQUIRES: executable_test
let a: ((Int, Int)) -> Void = { x in }
let b: Any = a
let cast1 = b as? (Int, Int) -> Void
let cast2 = b as? ((Int, Int)) -> Void
// CHECK: ok
print((cast1 == nil) ? "ok" : "fail")
// CHECK: ok
print((cast2 != nil) ? "ok" : "fail")
let c: () -> Void = { }
let d: (()) -> Void = { x in }
let e: Any = c
let f: Any = d
let cast3 = e as? () -> Void
let cast4 = e as? (()) -> Void
let cast5 = f as? () -> Void
let cast6 = f as? (()) -> Void
// CHECK: ok
print((cast3 != nil) ? "ok" : "fail")
// CHECK: ok
print((cast4 == nil) ? "ok" : "fail")
// CHECK: ok
print((cast5 == nil) ? "ok" : "fail")
// CHECK: ok
print((cast6 != nil) ? "ok" : "fail")
let g: (Int, Int) -> Void = { x, y in }
let h: Any = g
let cast7 = h as? ((Int, Int)) -> Void
let cast8 = h as? (Int, Int) -> Void
// CHECK: ok
print((cast7 == nil) ? "ok" : "fail")
// CHECK: ok
print((cast8 != nil) ? "ok" : "fail")
let t1: Any.Type = ((Int, Int) -> ()).self
let t2: Any.Type = (((Int, Int)) -> ()).self
// CHECK: ok
print((t1 == t2) ? "fail" : "ok")
let i: (inout Int) -> Void = { _ in }
let j: (__shared Int) -> Void = { _ in }
let k: (Int, inout Int) -> Void = { _,_ in }
let l: (inout Int, Float, inout String) -> Void = { _,_,_ in }
let m: (__shared Int, String, inout Float, Double) -> Void = { _,_,_,_ in }
let n: () -> Int = { 42 }
let o: (@autoclosure () -> Int) -> Void = { (x: @autoclosure () -> Int) -> Void in }
let p: (@autoclosure @escaping () -> Int) -> Void = { (x: @autoclosure @escaping () -> Int) -> Void in }
let i_any: Any = i
let j_any: Any = j
let k_any: Any = k
let l_any: Any = l
let m_any: Any = m
let n_any: Any = n
let o_any: Any = o
let p_any: Any = p
// CHECK: ok
print((i_any as? (Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((i_any as? (__shared Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((i_any as? (inout Int) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((j_any as? (Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((j_any as? (inout Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((j_any as? (__shared Int) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((k_any as? (Int, Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((k_any as? (Int, inout Int) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((k_any as? (inout Int, Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((k_any as? (inout Int, __shared Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (Int, Float, String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (Int, Float, inout String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (Int, inout Float, String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (inout Int, Float, String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (inout Int, inout Float, String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (inout Int, Float, __shared String) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((l_any as? (inout Int, Float, inout String) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((m_any as? (Int, String, Float, Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (Int, String, Float, inout Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (Int, String, Float, __shared Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (Int, String, inout Float, Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (Int, __shared String, Float, Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (inout Int, String, __shared Float, Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (__shared Int, String, Float, inout Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (Int, __shared String, inout Float, Double) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((m_any as? (__shared Int, String, inout Float, Double) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((n_any as? () -> Int) != nil ? "ok" : "fail")
// CHECK: ok
print((n_any as? () -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((n_any as? (Int) -> Int) != nil ? "fail" : "ok")
// CHECK: ok
print((o_any as? (() -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((o_any as? (inout () -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((o_any as? (@escaping () -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((o_any as? (@autoclosure () -> Int) -> Void) != nil ? "ok" : "fail")
// CHECK: ok
print((o_any as? (@autoclosure @escaping () -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((p_any as? (@escaping () -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((p_any as? (@autoclosure () -> Int) -> Void) != nil ? "fail" : "ok")
// CHECK: ok
print((p_any as? (@autoclosure @escaping () -> Int) -> Void) == nil ? "fail" : "ok")
|