Skip to content

Commit 922780b

Browse files
committed
[FOLD] correctly handle nested template argument lists
1 parent c1042a5 commit 922780b

File tree

1 file changed

+5
-1
lines changed

1 file changed

+5
-1
lines changed

clang/lib/Parse/ParseTentative.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
#include "clang/Basic/DiagnosticParse.h"
1515
#include "clang/Parse/Parser.h"
16+
#include "clang/Parse/RAIIObjectsForParser.h"
1617
#include "clang/Sema/ParsedTemplate.h"
1718
using namespace clang;
1819

@@ -2324,6 +2325,9 @@ Parser::TPResult Parser::isTemplateArgumentList(unsigned TokensToSkip, TemplateN
23242325
if (!TryConsumeToken(tok::less))
23252326
return TPResult::False;
23262327

2328+
bool IsNestedTemplateArgumentList = !GreaterThanIsOperator;
2329+
GreaterThanIsOperatorScope G(GreaterThanIsOperator, false);
2330+
23272331
while (true) {
23282332
// An expression cannot be followed by a braced-init-list unless
23292333
// its the right operand of an assignment operator.
@@ -2338,7 +2342,7 @@ Parser::TPResult Parser::isTemplateArgumentList(unsigned TokensToSkip, TemplateN
23382342
if (InvalidAsTemplateArgumentList)
23392343
return TPResult::False;
23402344

2341-
if (!GreaterThanIsOperator || TNK != TNK_Non_template)
2345+
if (IsNestedTemplateArgumentList || TNK != TNK_Non_template)
23422346
break;
23432347

23442348
if (TryAnnotateOptionalCXXScopeToken())

0 commit comments

Comments
 (0)