diff options
author | Saar Raz <saar@raz.email> | 2020-01-15 02:48:42 +0200 |
---|---|---|
committer | Saar Raz <saar@raz.email> | 2020-01-15 04:02:39 +0200 |
commit | ff1e0fce817e01f0288fad6a2607dd173180aabd (patch) | |
tree | 707c0171e1619c109d41b4db69af6353a97399f9 /clang/lib/Parse/ParseDecl.cpp | |
parent | 8e780252a7284be45cf1ba224cabd884847e8e92 (diff) | |
download | llvm-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.cpp | 7 |
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: |