aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-02-11 18:16:40 +0000
committerDouglas Gregor <dgregor@apple.com>2009-02-11 18:16:40 +0000
commit62cb18dd11472965e03374d40bc27d650bc331b6 (patch)
tree654a40f9c9f2cbe7baaa5e32496ddef569431851 /lib/Sema/SemaTemplate.cpp
parent7151bbb55c8a437073e42f74348c3fd5f1d5b410 (diff)
Allow the use of default template arguments when forming a class
template specialization (e.g., std::vector<int> would now be well-formed, since it relies on a default argument for the Allocator template parameter). This is much less interesting than one might expect, since (1) we're not actually using the default arguments for anything important, such as naming an actual Decl, and (2) we'll often need to instantiate the default arguments to check their well-formedness. The real fun will come later. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64310 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaTemplate.cpp')
-rw-r--r--lib/Sema/SemaTemplate.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Sema/SemaTemplate.cpp b/lib/Sema/SemaTemplate.cpp
index 86f1e2017f..b4436a2c3c 100644
--- a/lib/Sema/SemaTemplate.cpp
+++ b/lib/Sema/SemaTemplate.cpp
@@ -685,7 +685,7 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template,
bool Invalid = false;
if (NumArgs > NumParams ||
- NumArgs < NumParams /*FIXME: default arguments! */) {
+ NumArgs < Params->getMinRequiredArguments()) {
// FIXME: point at either the first arg beyond what we can handle,
// or the '>', depending on whether we have too many or too few
// arguments.
@@ -698,7 +698,8 @@ bool Sema::CheckTemplateArgumentList(TemplateDecl *Template,
isa<FunctionTemplateDecl>(Template)? 1 :
isa<TemplateTemplateParmDecl>(Template)? 2 : 3)
<< Template << Range;
-
+ Diag(Template->getLocation(), diag::note_template_decl_here)
+ << Params->getSourceRange();
Invalid = true;
}