| // 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") |