// 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
let a{let f=[{func a{class b{struct a{let e=A{a T{class a{class b{class B{let:{{let A{let a{func b{class B{let:{class b{func d{{func a(){let a<A{var b<T{class b{let:{{{}struct d{class b{func a{let f{struct B{class b{struct S{let a{let a=[{let d{var d{{{{{{}}}}}class b{struct d{struct c{{{}}struct c{struct a{{}struct B{class B{let f{let e=a=c
