summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/Sema.h
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2010-01-12 21:28:44 +0000
committerDouglas Gregor <dgregor@apple.com>2010-01-12 21:28:44 +0000
commit18473f329dbd23a888fd09b39ea3832e42ce1604 (patch)
treecd08d17e1e210dac0aa2596cabfeece746c93922 /clang/lib/Sema/Sema.h
parentfaa5417264d4fd3ec923b72f18a78c95a6ae143d (diff)
downloadbcm5719-llvm-18473f329dbd23a888fd09b39ea3832e42ce1604.tar.gz
bcm5719-llvm-18473f329dbd23a888fd09b39ea3832e42ce1604.zip
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<U> { }; // expected-error{{missing 'template' ... ^ template test/SemaTemplate/dependent-base-classes.cpp:12:13: error: unknown template name 'vector' struct X2 : vector<T> { }; // expected-error{{unknown template name 'vector'}} ^ 2 diagnostics generated. llvm-svn: 93257
Diffstat (limited to 'clang/lib/Sema/Sema.h')
-rw-r--r--clang/lib/Sema/Sema.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/Sema.h b/clang/lib/Sema/Sema.h
index d46bfc6cffd..d06cecc4678 100644
--- a/clang/lib/Sema/Sema.h
+++ b/clang/lib/Sema/Sema.h
@@ -2367,6 +2367,14 @@ public:
TypeTy *ObjectType,
bool EnteringContext,
TemplateTy &Template);
+
+ virtual bool DiagnoseUnknownTemplateName(const IdentifierInfo &II,
+ SourceLocation IILoc,
+ Scope *S,
+ const CXXScopeSpec *SS,
+ TemplateTy &SuggestedTemplate,
+ TemplateNameKind &SuggestedKind);
+
bool DiagnoseTemplateParameterShadow(SourceLocation Loc, Decl *PrevDecl);
TemplateDecl *AdjustDeclIfTemplate(DeclPtrTy &Decl);
OpenPOWER on IntegriCloud