1*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -emit-pch -o %t %s 2*67e74705SXin Li // RUN: %clang_cc1 -std=c++11 -include-pch %t -verify %s 3*67e74705SXin Li 4*67e74705SXin Li // expected-no-diagnostics 5*67e74705SXin Li 6*67e74705SXin Li // Before the patch, this test triggered an assert violation in 7*67e74705SXin Li // ASTContext::getSubstTemplateTypeParmType. 8*67e74705SXin Li 9*67e74705SXin Li #ifndef HEADER_INCLUDED 10*67e74705SXin Li #define HEADER_INCLUDED 11*67e74705SXin Li 12*67e74705SXin Li template <typename T> 13*67e74705SXin Li using Id = T; 14*67e74705SXin Li 15*67e74705SXin Li template <typename X> 16*67e74705SXin Li struct Class1 { 17*67e74705SXin Li template <typename Y, typename = decltype(Y())> 18*67e74705SXin Li struct Nested1; 19*67e74705SXin Li }; 20*67e74705SXin Li 21*67e74705SXin Li template <typename A> 22*67e74705SXin Li struct Class2 { 23*67e74705SXin Li template <typename B, typename = Id<decltype(B())>> 24*67e74705SXin Li struct Nested2; 25*67e74705SXin Li }; 26*67e74705SXin Li 27*67e74705SXin Li #else 28*67e74705SXin Li 29*67e74705SXin Li Class2<char> test; 30*67e74705SXin Li 31*67e74705SXin Li #endif 32