diff options
| author | Douglas Gregor <dgregor@apple.com> | 2011-03-03 17:04:51 +0000 |
|---|---|---|
| committer | Douglas Gregor <dgregor@apple.com> | 2011-03-03 17:04:51 +0000 |
| commit | e29139c77de92fd5d87225fbcb46e473db96ea27 (patch) | |
| tree | 1cbec64e294bd9e8a63388f91b5cba68383f8002 /clang/lib/AST/ASTContext.cpp | |
| parent | 66a35d765f43f0e77face9e912c9ee468a5d2ff0 (diff) | |
| download | bcm5719-llvm-e29139c77de92fd5d87225fbcb46e473db96ea27.tar.gz bcm5719-llvm-e29139c77de92fd5d87225fbcb46e473db96ea27.zip | |
Eliminate redundant nested-name-specifiers on
TemplateSpecializationTypes, which also fixes PR9388.
llvm-svn: 126946
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 5335a8b0c88..3fd58ce9fdf 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -2230,6 +2230,9 @@ ASTContext::getTemplateSpecializationType(TemplateName Template, QualType Canon) const { assert(!Template.getAsDependentTemplateName() && "No dependent template names here!"); + // Look through qualified template names. + if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName()) + Template = TemplateName(QTN->getTemplateDecl()); if (!Canon.isNull()) Canon = getCanonicalType(Canon); @@ -2257,6 +2260,9 @@ ASTContext::getCanonicalTemplateSpecializationType(TemplateName Template, unsigned NumArgs) const { assert(!Template.getAsDependentTemplateName() && "No dependent template names here!"); + // Look through qualified template names. + if (QualifiedTemplateName *QTN = Template.getAsQualifiedTemplateName()) + Template = TemplateName(QTN->getTemplateDecl()); // Build the canonical template specialization type. TemplateName CanonTemplate = getCanonicalTemplateName(Template); @@ -4387,6 +4393,8 @@ TemplateName ASTContext::getQualifiedTemplateName(NestedNameSpecifier *NNS, bool TemplateKeyword, TemplateDecl *Template) const { + assert(NNS && "Missing nested-name-specifier in qualified template name"); + // FIXME: Canonicalization? llvm::FoldingSetNodeID ID; QualifiedTemplateName::Profile(ID, NNS, TemplateKeyword, Template); |

