forked from OSchip/llvm-project
59 lines
1.1 KiB
C++
59 lines
1.1 KiB
C++
// 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
|