Make tentative parsing to detect template-argument-lists less aggressive
authorRichard Smith <richard-llvm@metafoo.co.uk>
Wed, 15 May 2019 23:36:14 +0000 (23:36 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Wed, 15 May 2019 23:36:14 +0000 (23:36 +0000)
commitbeda951d788a0041e9f5fabbb4e018e8b9d0a2d3
treecd27c014a19a93329a6207c23dbda65623c43fb2
parent7684d05d95b9369fa0454b525093ed04ee91b1e1
Make tentative parsing to detect template-argument-lists less aggressive
(and less wrong).

It's not correct to assume that X<something, Type> is always a
template-id; there are a few cases where the comma takes us into a
non-expression syntactic context in which 'Type' might be permissible.
Stop doing that.

This slightly regresses our error recovery on the cases where the
construct is intended to be a template-id. We typically do still manage
to diagnose a missing 'template' keyword, but we realize this too late
to properly recover from the error.

This fixes a regression introduced by r360308.

llvm-svn: 360827
clang/lib/Parse/ParseTentative.cpp
clang/test/Parser/cxx-template-argument.cpp
clang/test/SemaTemplate/dependent-template-recover.cpp