From 18473f329dbd23a888fd09b39ea3832e42ce1604 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 12 Jan 2010 21:28:44 +0000 Subject: Improve recovery for template-ids whose template-name doesn't actually name a template, when they occur in a base-specifier. This is one of the (few) places where we know for sure that an identifier followed by a '<' must be a template name, so we can diagnose and recover well: test/SemaTemplate/dependent-base-classes.cpp:9:16: error: missing 'template' keyword prior to dependent template name 'T::apply' struct X1 : T::apply { }; // expected-error{{missing 'template' ... ^ template test/SemaTemplate/dependent-base-classes.cpp:12:13: error: unknown template name 'vector' struct X2 : vector { }; // expected-error{{unknown template name 'vector'}} ^ 2 diagnostics generated. llvm-svn: 93257 --- clang/test/SemaTemplate/dependent-base-classes.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'clang/test/SemaTemplate/dependent-base-classes.cpp') diff --git a/clang/test/SemaTemplate/dependent-base-classes.cpp b/clang/test/SemaTemplate/dependent-base-classes.cpp index 56979209ea1..242765894f7 100644 --- a/clang/test/SemaTemplate/dependent-base-classes.cpp +++ b/clang/test/SemaTemplate/dependent-base-classes.cpp @@ -4,3 +4,9 @@ template struct X0 : T::template apply { X0(U u) : T::template apply(u) { } }; + +template +struct X1 : T::apply { }; // expected-error{{missing 'template' keyword prior to dependent template name 'T::apply'}} + +template +struct X2 : vector { }; // expected-error{{unknown template name 'vector'}} -- cgit v1.2.3