// 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
extension String {
typealias f = { c
func b[")
var b = d(c = [c(Any) -> a {
}
self] = {
class B : A {
}
return {
}
}
protocol a {
deinit {
}
class A, let d(Any)] == [T : a {
}
func e: S<T>Bool]
enum B {
let h == B<d, b {
}
}
struct Q<(self.startIndex)) -> {
for b : U : b<T -> : Array<Q<T> String {
public subscript () {
class func f<j : d {
}
}
}
}
}
struct c: Any, T -> String {
}
protocol P {
A> U, Any) -> {
}
}
struct c(f: b>
