diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-02-09 21:04:56 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-02-09 21:04:56 +0000 |
commit | f02da89d7bddc319be52605d36442518647116b4 (patch) | |
tree | 902ae3068a50f08402a64e7b5f54f1d5b4d432cd /lib/Parse/ParseTemplate.cpp | |
parent | 668bf91d31265b6ea8c3eb854ba450857701f269 (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.cpp | 8 |
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; } } |