// RUN: %clang_cc1 -pedantic-errors -std=c++1y -emit-pch %s -o %t-cxx1y // RUN: %clang_cc1 -ast-print -pedantic-errors -std=c++1y -include-pch %t-cxx1y %s | FileCheck -check-prefix=CHECK-PRINT %s #ifndef HEADER_INCLUDED #define HEADER_INCLUDED auto nested_local_call_all() { struct Inner1 { auto inner1_foo(char c) { struct Inner2 { template<class T> T inner2_foo(T t) { return t; } }; return Inner2{}; } }; return Inner1{}.inner1_foo('a').inner2_foo(4); } auto nested_local() { struct Inner1 { auto inner1_foo(char c) { struct Inner2 { template<class T> T inner2_foo(T t) { return t; } }; return Inner2{}; } }; return Inner1{}; } int test() { auto A = nested_local_call_all(); auto B = nested_local(); auto C = B.inner1_foo('a'); C.inner2_foo(3.14); } #else // CHECK-PRINT: int nested_local_call_all // CHECK-PRINT: nested_local auto nested_local_call_all(); int test(int y) { return nested_local_call_all(); } #endif