// This source file is part of the Swift.org open source project // Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors // Licensed under Apache License v2.0 with Runtime Library Exception // // See https://swift.org/LICENSE.txt for license information // See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors // RUN: not %target-swift-frontend %s -typecheck func b d { class d:b class b class l { func f((k, l() -> f } class d } class i: d, g { l func d() -> f { m "" } } } func m() -> (T, T -> T) -> T { var b: ((T, T -> T) -> T)! return b } protocol A { typealias E } struct B() {f { class func i() } class d: f{ class func i {} func f() { ({}) } func prefix(with: String) -> (() -> T) -> String { return { g in "\(with): \(g())" } } protocol a : a { } protocol f { k g d { k d k k } j j : d { k , d> } class f: f { } class B : l { } k l = B class f() -> (w, w -> w) -> w { o m o.q = { } { w) { k } } protocol n { class func q() } class o: n{ class func q {} func p(e: Int = x) { } let c = p c() func r ==(r(t)) protocol p : p { } protocol p { class func c() } class e: p { class func c() { } } (e() u p).v.c() k e.w == l> { } func p(c: Any, m: Any) -> (((Any, Any) -> Any) -> Any) { () { g g h g } } func e(i: d) -> (() -> f)> i) import Foundation class q: NSObject { var j: k e ^(l: m, h) -> h { f !(l) } protocol l { d g n() } class h: l { class g n() { } } (h() o l).p.n() class l Int = { n $0 o: Int = { d, l f n l(d) }(k, m) protocol j { typealias d typealias n = d typealias l = d} class g : j { } class g { } protocol l { typealias g d) func e(h: b) -> (() -> f) -> b { return { c):h())" } } func b k { ? { h (s : t?) q u { g let d = s { p d } } e} let u : [Int?] = [n{ c v: j t.v == m>(n: o) { } } class r { typealias n = n struct c { let d: i h } func f(h: b) -> (()-> e func d(b: String-> () -> c) class A { } class a { typealias b = b } b protocol d : b { func b func d(e: = { (g: h, f: h -> h) -> h in return f(g) } protocol A { typealias E } struct B { let h: T let i: T.E } protocol C { typealias F func g(f: B) } struct D : C { typealias F = Int func g(f: B) { } } func i(c: () -> ()) { } class a { var _ = i() { } } func a() -> [c{ enum b { case c class a { } protocol b { typealias d typealias e } struct c : b { typealias d = h typealias e = a, d> } d "" e} class d { func b((Any, d)typealias b = b func ^(a: Boolean, Bool) -> Bool { return !(a) } func r() { f f { i i } } struct i { o f: o } func r() -> [i] { p [] } class g { } class g: g { } class n : h { } typealias h = n protocol g { func i() -> l func o() -> m { q"" } } func j(s: t) { s.i() } protocol r { } protocol f : r { } protocol i : r { } j protocol a { } protocol h : a { } protocol k : a { } protocol g { j n = a } struct n : g { j n = h } func i (g: f) { } func i (() -> d) { } import Foundation class d: NSObject { var b: c init(b: c) { self.b = b } } protocol A { typealias B } class C { init (e: A.B) { } } } } protocol l { class func i() } class o: l{ class func i {} class h: h { } class m : C { } typealias C = m func s == S.k.b>(r : S) -> t? { j (u : t?) q r { l let g = u { p g } } p v } let r : [n?] = [w o = h typealias h = x { l g: e } func h() -> [l] { f [] } func i(e: g) -> (() -> j) -> k class A { } func c : A { func b(b: X.Type) { } } func m(c: b) -> (() -> h) -> b { f) -> j) -> > j { l i !(k) } d l) func d-> (m, m - class f { } protocol d { i l i i } struct l : d { i j i() { l.i() } } protocol f { } protocol d : f { func i(f: g) -> (() -> j) -> g { func g k, l { typealias l = m, f> } class j { func y((Any, j))(v: (Any, AnyObject)) { y(v) } } func w(j: () -> ()) { } class v { l _ = w() { } } ({}) func v() -> (x, x -> x) -> x { l y j s { } o l { u n } y q { s w(x, () -> ()) } o n { func j() p } class r { func s() -> p { t "" } } class w: r, n { k v: ))] = [] } class n func p

() -> (p, p -> p) -> p { l c l.l = { } { p) { (e: o, h:o) -> e }) } j(k(m, k(2, 3))) func l(p: j) -> (() -> n } e protocol h : e { func e func r(d: t, k: t) -> (((t, t) -> t) -i g { p m func e(m) } struct e : g { func e( h s: n -> n = { return $u } l o: n = { (d: n, o: n -> n) -> n q return o(d) } class A: A { } class B : C { } typealias C = B n) func f() -> (o, o -> o) -> o { o m o.j = { } { o) { r } } p q) { } o m = j m() class m { func r((Any, m))(j: (Any, AnyObject)) { r(j) } } func m: d { l i: u init(i: u) { o.i = j { r { w s "\(f): \(w())" } } protocol h { q k { t w } w protocol k : w { func v (l: h.p) { } } protocol h { n func w(w: } class h { func m() -> (u, u -> u) -> u { p o p.s = { } { u) { o } } s m { class func s() } class p: m{ class func s {} s p { func m() -> String } class n { func p() -> String { q "" } } class e: n, p { v func> String { q "" } { r m = m } func s (m: o) { } func s (u: String) -> (() -> t) - struct c == d.Iterator.Element> func f() -> (m, m -> m) -> m { e c e.i = { } { m) { n } } protocol f { class func i() } class e: f{ class func i {} func n() -> (j, j -> j) -> j { var m: ((j> j)! f m } protocol k { typealias m } struct e {n: j let i: j.m } l ({}) protocol f : f { } func h() -> (g, g -> g) -> g struct c { var b: [c] { return [] } protocol a { class func c() } class b: a { class func c() { } } (b() as a).dynamicType.c() func f(b: T) { } f(true as Boolean) func a(x: Any, y: Any) -> (((Any, Any) -> Any) -> A var d: b.Type func e() { d.e() } } b protocol c : b { func b otocol A { E == F>(f: B) } struct } } func a(b: Int = 0) { } let c = a c() protocol p { class func g() } class h: p { class func g() { } } (h() as p).dynamicType.g() protocol p { } protocol h : p { } protocol g : p { } protocol n { o t = p } struct h : n { t : n q m.t == m> (h: m) { } func q (h: t) { } q(h()) func r(g: m) -> (() -> s) -> n }func h(c: j) -> (() -> i) -> b { f j = e func j(d: B) f g } struct d : b { typealias b = i typealias g = ai) { } let d = a d() a=d g a=d protocol a : a { } class a { typealias b = b func b(e : e) -> c { e ) func t() -> (v, v -> v) -> v { var d: ((v, v -> v) -> v)! q d } protocol t { } protocol d : t { } protocol g : t { } s q l }) } d(t(u, t(w, y))) protocol e { r j } struct m { k x: v k x: v.j } protocol n { g == o>(n: m) { } } struct e { k t: [(v, () -> ())] = [](m) } struct d : e { func d(d: d.p) { } } class e { } func f() -> (e, e -> e) -> e { e b e.c = {} { e) { f } } protocol f { class func c() } class e: f { class func c } } ) var d = b =b as c=b func d() -> String { return 1 k f { typealias c } class g g { m "" } } class C: k, A { j func l()q c() -> g { m "" } } func e(n: r) { n.c() } protocol A { typealias h } c k { p f: r p p: r.h } protocol C l.e() } } class o { typealias l = l import Foundation class Foo: NSObject { var foo: T init(foo: T) { B>(t: T) { t.y) -> Any) -> Any l k s(j, t) } } func b(s: (((Any, Any) -> Any) -> Any) import Foundation class mk i() { enum b { case c } } struct d { } protocol e { typealias h } func c() -> (g, g -> g) -> g { d b d.f = { } { g) { i } } i c { class func f() } class d: c{ class func f {} struct d class k: d { var f: g init(f: g) { self.f = f l. d { typealias i = l typealias j = j, i> } class j { typealias d = d func f() { ({}) } } class p { u _ = q() { } } u l = r u s: k -> k = { n $h: m.j) { } } o l() { ({}) } struct m { let p: [(t, () -> ())] = [] } protocol p : p { } protocol m { o u() -> String } class j { o m() -> String { n "" } } class h: j, m { q o m() -> String { n "" } o u() -> S, q> { } protocol u { typealias u } class p { typealias u = u func k : r { func j(j: j.n) { } } enum q { let k: v let u: v.l } protocol y { o= p>(r: m) } struct D : y { s p = Int func y { w () -> (h, h -> h) -> h { f f: ((h, h -> h) -> h)! j f } protocol f { class func j() } struct i { f d: f.i func j() { d.j() } } class g { typealias f = f } func g(f: Int = k) { } let i = g func f(b: T) { } f(true as Boolean) o class w: c { init(g: r) { n.g = g s.init() (t: o struct t : o { p v = t } q t { let a: [(T, () -> ())] = [] } func f() -> (r, r -> r) -> r { f r f.j = { } { r) { s } } protocol f { class func j() } class f: f{ class func j {} protocol j { class func m() } class r: j { class func m() { } } (r() n j).p.m() j=k n j=k protocol r { class func q() } s m { m f: r.q func q() { f.q() } (l, () -> ()) } func f(r: l) import Foundation class m: NSObject { var h: j g -> k = l $n } b f: _ = j() { } } func k(l: j) { l.k() } func i(k: b) -> (() -> j) -> b { f { m m "\(k): \(m())" } } protocol h var f = 1 var e: Int -> Int = { return $0 } let d: Int = { c, b in }(f, e) } } class b i: g{ func c {} e g { : g { h func i() -> } func C { } func prefix(with: String) -> (() -> T) -> String { { g in "\(withing } clasnintln(some(xs)) class c { func b((Any, c))(a: (Any, AnyObject)) { b(a) } } struct c { var b: d } func a() -> [c] { return [] } protocol a { class func c() } class b: a { class func c() { } } (b() as a).dynamicType.c() protocol a { } protocol b : a { } protocol c : a { } protocol d { typealias f = a } struct e : d { typealias f = b } func i (n: k) { } func i (n: l) { } i(e()) func f(k: Any, j: Any) -> (((Any, Any) -> Any) -> c k) func c() -> (i, i -> i) -> i { k b k.i = { } { i) { k } } protocol c { class func i() } class k: c{ class func i { a } struct e : f { i f = g } func i (c: e) { } func i (c: h) { } i(e()) class a