31 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -ftemplate-depth=5 -ftemplate-backtrace-limit=4 %s2// RUN: %clang -fsyntax-only -Xclang -verify -ftemplate-depth-5 -ftemplate-backtrace-limit=4 %s3// RUN: %clang -fsyntax-only -Xclang -verify -ftemplate-depth=5 -ftemplate-backtrace-limit=4 %s4 5#ifndef NOEXCEPT6 7template<typename T> struct X : X<T*> { }; \8// expected-error{{recursive template instantiation exceeded maximum depth of 5}} \9// expected-note 3 {{instantiation of template class}} \10// expected-note {{skipping 2 contexts in backtrace}} \11// expected-note {{use -ftemplate-depth=N to increase recursive template instantiation depth}}12 13void test() {14 (void)sizeof(X<int>); // expected-note {{instantiation of template class}}15}16 17#else18 19// RUN: %clang_cc1 -fsyntax-only -verify -ftemplate-depth=5 -ftemplate-backtrace-limit=4 -std=c++11 -DNOEXCEPT %s20 21template<typename T> struct S {22 S() noexcept(noexcept(S<S>())); \23// expected-error{{recursive template instantiation exceeded maximum depth of 5}} \24// expected-note 3 {{in instantiation of exception spec}} \25// expected-note {{skipping 2 contexts in backtrace}} \26// expected-note {{use -ftemplate-depth=N to increase recursive template instantiation depth}}27};28S<void> t; // expected-note {{in instantiation of exception spec}}29 30#endif31