// 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
class x<ji>: y {
    init(u: ji) {
        kj. y {
    b r = ji: v -> v = {
}
ih y: v =  { fe, b cb
}(u, n)
}
class y {
    func kj<r where r: dc, r: y>(kj: r) {
}
func ed(x: b) -> <r>(() -> r) -> b {
}
class r {
    func w((gf, r))(dc: (gf, fe)) {
    }
}
func y(r: () -> ()) {
}
class dc {
    kj _ = y() {
    }
}
func dc<ed>() -> (ed, ed -> ed) -> ed {
    kj w r ih<r : kj, w: kj fe w.n == r.n> {
}
w kj {
}
w r<ed> {
}
w n {
}
class kj {
    func ih() -> dc {
    }
}
class y: kj, n {
}
func b<fe {
  b b {
    }
}
}
class y<r : ed, u : ed where r.ed == u> : n {
}
class y<r, u> {
}
protocol ed {
}
protocol n {
}
protocol ed : y { func y
