// RUN: %clang %s -fsyntax-only -fbracket-depth=512
// RUN: not %clang %s -fsyntax-only -fbracket-depth=512 -DFAIL 2>&1 | FileCheck %s
template <class T> int foo(T &&t);
void bar(int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
[](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo([](int x = foo(
#ifdef FAIL
[](int x = foo(
#endif
[](int x = foo(1)){}
#ifdef FAIL
)){}
#endif
)){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
)){})){})){})){})){})){})){})){}
));
// CHECK: fatal error: function scope depth exceeded maximum of 127