diff options
| author | 2019-01-27 16:42:12 +0000 | |
|---|---|---|
| committer | 2019-01-27 16:42:12 +0000 | |
| commit | b773203fb58f3ef282fb69c832d8710cab5bc82d (patch) | |
| tree | e75913f147570fbd75169647b144df85b88a038c /gnu/llvm/tools/clang/lib/AST/TemplateName.cpp | |
| parent | tweak errno in previous (diff) | |
| download | wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.tar.xz wireguard-openbsd-b773203fb58f3ef282fb69c832d8710cab5bc82d.zip | |
Import LLVM 7.0.1 release including clang, lld and lldb.
Diffstat (limited to 'gnu/llvm/tools/clang/lib/AST/TemplateName.cpp')
| -rw-r--r-- | gnu/llvm/tools/clang/lib/AST/TemplateName.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gnu/llvm/tools/clang/lib/AST/TemplateName.cpp b/gnu/llvm/tools/clang/lib/AST/TemplateName.cpp index bd04fd8366b..0a7a6bc3c6a 100644 --- a/gnu/llvm/tools/clang/lib/AST/TemplateName.cpp +++ b/gnu/llvm/tools/clang/lib/AST/TemplateName.cpp @@ -31,7 +31,7 @@ using namespace clang; -TemplateArgument +TemplateArgument SubstTemplateTemplateParmPackStorage::getArgumentPack() const { return TemplateArgument(llvm::makeArrayRef(Arguments, size())); } @@ -40,7 +40,7 @@ void SubstTemplateTemplateParmStorage::Profile(llvm::FoldingSetNodeID &ID) { Profile(ID, Parameter, Replacement); } -void SubstTemplateTemplateParmStorage::Profile(llvm::FoldingSetNodeID &ID, +void SubstTemplateTemplateParmStorage::Profile(llvm::FoldingSetNodeID &ID, TemplateTemplateParmDecl *parameter, TemplateName replacement) { ID.AddPointer(parameter); @@ -52,7 +52,7 @@ void SubstTemplateTemplateParmPackStorage::Profile(llvm::FoldingSetNodeID &ID, Profile(ID, Context, Parameter, getArgumentPack()); } -void SubstTemplateTemplateParmPackStorage::Profile(llvm::FoldingSetNodeID &ID, +void SubstTemplateTemplateParmPackStorage::Profile(llvm::FoldingSetNodeID &ID, ASTContext &Context, TemplateTemplateParmDecl *Parameter, const TemplateArgument &ArgPack) { @@ -180,13 +180,18 @@ bool TemplateName::isInstantiationDependent() const { if (QTN->getQualifier()->isInstantiationDependent()) return true; } - + return isDependent(); } bool TemplateName::containsUnexpandedParameterPack() const { + if (QualifiedTemplateName *QTN = getAsQualifiedTemplateName()) { + if (QTN->getQualifier()->containsUnexpandedParameterPack()) + return true; + } + if (TemplateDecl *Template = getAsTemplateDecl()) { - if (TemplateTemplateParmDecl *TTP + if (TemplateTemplateParmDecl *TTP = dyn_cast<TemplateTemplateParmDecl>(Template)) return TTP->isParameterPack(); @@ -194,7 +199,7 @@ bool TemplateName::containsUnexpandedParameterPack() const { } if (DependentTemplateName *DTN = getAsDependentTemplateName()) - return DTN->getQualifier() && + return DTN->getQualifier() && DTN->getQualifier()->containsUnexpandedParameterPack(); return getAsSubstTemplateTemplateParmPack() != nullptr; @@ -215,7 +220,7 @@ TemplateName::print(raw_ostream &OS, const PrintingPolicy &Policy, if (!SuppressNNS && DTN->getQualifier()) DTN->getQualifier()->print(OS, Policy); OS << "template "; - + if (DTN->isIdentifier()) OS << DTN->getIdentifier()->getName(); else |
