aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Parse/ParseDecl.cpp
diff options
context:
space:
mode:
authorSaar Raz <saar@raz.email>2020-01-15 02:48:42 +0200
committerSaar Raz <saar@raz.email>2020-01-15 04:02:39 +0200
commitff1e0fce817e01f0288fad6a2607dd173180aabd (patch)
tree707c0171e1619c109d41b4db69af6353a97399f9 /clang/lib/Parse/ParseDecl.cpp
parent8e780252a7284be45cf1ba224cabd884847e8e92 (diff)
downloadllvm-ff1e0fce817e01f0288fad6a2607dd173180aabd.zip
llvm-ff1e0fce817e01f0288fad6a2607dd173180aabd.tar.gz
llvm-ff1e0fce817e01f0288fad6a2607dd173180aabd.tar.bz2
[Concepts] Type Constraints
Add support for type-constraints in template type parameters. Also add support for template type parameters as pack expansions (where the type constraint can now contain an unexpanded parameter pack). Differential Revision: https://reviews.llvm.org/D44352
Diffstat (limited to 'clang/lib/Parse/ParseDecl.cpp')
-rw-r--r--clang/lib/Parse/ParseDecl.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Parse/ParseDecl.cpp b/clang/lib/Parse/ParseDecl.cpp
index c94ccee..69a3ed9 100644
--- a/clang/lib/Parse/ParseDecl.cpp
+++ b/clang/lib/Parse/ParseDecl.cpp
@@ -5121,6 +5121,13 @@ bool Parser::isDeclarationSpecifier(bool DisambiguatingWithExpression) {
return !DisambiguatingWithExpression ||
!isStartOfObjCClassMessageMissingOpenBracket();
+ // placeholder-type-specifier
+ case tok::annot_template_id: {
+ TemplateIdAnnotation *TemplateId = takeTemplateIdAnnotation(Tok);
+ return TemplateId->Kind == TNK_Concept_template &&
+ (NextToken().is(tok::kw_auto) || NextToken().is(tok::kw_decltype));
+ }
+
case tok::kw___declspec:
case tok::kw___cdecl:
case tok::kw___stdcall: