aboutsummaryrefslogtreecommitdiff
path: root/lib/Parse/ParseTemplate.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-02-09 21:04:56 +0000
committerDouglas Gregor <dgregor@apple.com>2009-02-09 21:04:56 +0000
commitf02da89d7bddc319be52605d36442518647116b4 (patch)
tree902ae3068a50f08402a64e7b5f54f1d5b4d432cd /lib/Parse/ParseTemplate.cpp
parent668bf91d31265b6ea8c3eb854ba450857701f269 (diff)
Implement Sebastian's idea for simplifying our handling of the greater-than operator/delimiter. Also, clean up after ourselves following a failed parse of a template-argument-list
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64166 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Parse/ParseTemplate.cpp')
-rw-r--r--lib/Parse/ParseTemplate.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/Parse/ParseTemplate.cpp b/lib/Parse/ParseTemplate.cpp
index f083be5602..fa76714139 100644
--- a/lib/Parse/ParseTemplate.cpp
+++ b/lib/Parse/ParseTemplate.cpp
@@ -371,13 +371,17 @@ void Parser::AnnotateTemplateIdToken(DeclTy *Template, TemplateNameKind TNK,
TemplateArgList TemplateArgs;
TemplateArgIsTypeList TemplateArgIsType;
{
- MakeGreaterThanTemplateArgumentListTerminator G(GreaterThanIsOperator);
+ GreaterThanIsOperatorScope G(GreaterThanIsOperator, false);
if (Tok.isNot(tok::greater) &&
ParseTemplateArgumentList(TemplateArgs, TemplateArgIsType)) {
// Try to find the closing '>'.
SkipUntil(tok::greater, true, true);
+
+ // Clean up any template arguments that we successfully parsed.
+ ASTTemplateArgsPtr TemplateArgsPtr(Actions, &TemplateArgs[0],
+ &TemplateArgIsType[0],
+ TemplateArgs.size());
- // FIXME: What's our recovery strategy for failed template-argument-lists?
return;
}
}