Parse A::template B as an identifier rather than as a template-id with no
authorRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 27 Apr 2018 02:00:13 +0000 (02:00 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Fri, 27 Apr 2018 02:00:13 +0000 (02:00 +0000)
commitc08b693e309baa80f0a3dd7794af130c3393c777
tree30986154bf0d7997794a5746ca6270df4d53f40c
parent93979f67f8cc49f596ae34c45699371bd3cda785
Parse A::template B as an identifier rather than as a template-id with no
template arguments.

This fixes some cases where we'd incorrectly accept "A::template B" when B is a
kind of template that requires template arguments (in particular, a variable
template or a concept).

llvm-svn: 331013
19 files changed:
clang/include/clang/Basic/DiagnosticParseKinds.td
clang/include/clang/Parse/Parser.h
clang/include/clang/Sema/Sema.h
clang/lib/Parse/ParseDecl.cpp
clang/lib/Parse/ParseDeclCXX.cpp
clang/lib/Parse/ParseExpr.cpp
clang/lib/Parse/ParseExprCXX.cpp
clang/lib/Parse/ParseOpenMP.cpp
clang/lib/Parse/ParseStmtAsm.cpp
clang/lib/Parse/Parser.cpp
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaExprMember.cpp
clang/lib/Sema/SemaTemplate.cpp
clang/test/CXX/drs/dr1xx.cpp
clang/test/CXX/drs/dr4xx.cpp
clang/test/CXX/temp/temp.res/p3.cpp
clang/test/Parser/cxx-decl.cpp
clang/test/SemaCXX/cxx1y-variable-templates_in_class.cpp
clang/test/SemaTemplate/template-id-expr.cpp