diff options
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/AST/Type.cpp | 8 |
2 files changed, 6 insertions, 4 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index b62438cd61a..18a3a4221aa 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -1373,8 +1373,6 @@ ASTContext::getTemplateSpecializationType(TemplateName Template, const TemplateArgument *Args, unsigned NumArgs, QualType Canon) { - // FIXME: If Template is dependent, canonicalize it! - if (!Canon.isNull()) Canon = getCanonicalType(Canon); diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 6922dcc6c08..a4117b2bdf9 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -94,8 +94,12 @@ QualType Type::getDesugaredType() const { if (const TypeOfType *TOT = dyn_cast<TypeOfType>(this)) return TOT->getUnderlyingType().getDesugaredType(); if (const TemplateSpecializationType *Spec - = dyn_cast<TemplateSpecializationType>(this)) - return Spec->getCanonicalTypeInternal().getDesugaredType(); + = dyn_cast<TemplateSpecializationType>(this)) { + QualType Canon = Spec->getCanonicalTypeInternal(); + if (Canon->getAsTemplateSpecializationType()) + return QualType(this, 0); + return Canon->getDesugaredType(); + } if (const QualifiedNameType *QualName = dyn_cast<QualifiedNameType>(this)) return QualName->getNamedType().getDesugaredType(); |

