|
29 | 29 | #include "clang/AST/StmtObjC.h"
|
30 | 30 | #include "clang/AST/StmtOpenACC.h"
|
31 | 31 | #include "clang/AST/StmtOpenMP.h"
|
| 32 | +#include "clang/AST/TypeLoc.h" |
32 | 33 | #include "clang/Basic/DiagnosticParse.h"
|
33 | 34 | #include "clang/Basic/OpenMPKinds.h"
|
| 35 | +#include "clang/Sema/DeclSpec.h" |
34 | 36 | #include "clang/Sema/Designator.h"
|
35 | 37 | #include "clang/Sema/EnterExpressionEvaluationContext.h"
|
36 | 38 | #include "clang/Sema/Lookup.h"
|
@@ -7216,7 +7218,46 @@ TreeTransform<Derived>::TransformElaboratedType(TypeLocBuilder &TLB,
|
7216 | 7218 | return QualType();
|
7217 | 7219 | }
|
7218 | 7220 |
|
7219 |
| - QualType NamedT = getDerived().TransformType(TLB, TL.getNamedTypeLoc()); |
| 7221 | + QualType NamedT; |
| 7222 | + if (0 && SemaRef.getLangOpts().CPlusPlus20 && QualifierLoc && isa<TemplateSpecializationType>(TL.getNamedTypeLoc().getType())) { |
| 7223 | + const TemplateSpecializationType *TST = TL.getNamedTypeLoc().getType()->getAs<TemplateSpecializationType>(); |
| 7224 | + TemplateSpecializationTypeLoc SpecTL = |
| 7225 | + TL.getNamedTypeLoc().castAs<TemplateSpecializationTypeLoc>(); |
| 7226 | + // TemplateArgumentListInfo NewTemplateArgs; |
| 7227 | + // NewTemplateArgs.setLAngleLoc(SpecTL.getLAngleLoc()); |
| 7228 | + // NewTemplateArgs.setRAngleLoc(SpecTL.getRAngleLoc()); |
| 7229 | + |
| 7230 | + // typedef TemplateArgumentLocContainerIterator< |
| 7231 | + // TemplateSpecializationTypeLoc> ArgIterator; |
| 7232 | + // if (getDerived().TransformTemplateArguments(ArgIterator(SpecTL, 0), |
| 7233 | + // ArgIterator(SpecTL, SpecTL.getNumArgs()), |
| 7234 | + // NewTemplateArgs)) |
| 7235 | + // return QualType(); |
| 7236 | + |
| 7237 | + CXXScopeSpec SS; |
| 7238 | + SS.Adopt(QualifierLoc); |
| 7239 | + TemplateName InstName = getDerived().RebuildTemplateName( |
| 7240 | + SS, TL.getTemplateKeywordLoc(), *TST->getTemplateName().getAsTemplateDecl()->getIdentifier(), TL.getNamedTypeLoc().getBeginLoc(), QualType(), nullptr, |
| 7241 | + false); |
| 7242 | + |
| 7243 | + if (InstName.isNull()) |
| 7244 | + return QualType(); |
| 7245 | + |
| 7246 | + // If it's still dependent, make a dependent specialization. |
| 7247 | + // if (InstName.getAsDependentTemplateName()) |
| 7248 | + // return SemaRef.Context.getDependentTemplateSpecializationType( |
| 7249 | + // Keyword, QualifierLoc.getNestedNameSpecifier(), Name, |
| 7250 | + // Args.arguments()); |
| 7251 | + |
| 7252 | + // Otherwise, make an elaborated type wrapping a non-dependent |
| 7253 | + // specialization. |
| 7254 | + // NamedT = getDerived().RebuildTemplateSpecializationType(InstName, TL.getNamedTypeLoc().getBeginLoc(), NewTemplateArgs); |
| 7255 | + NamedT = TransformTemplateSpecializationType(TLB, SpecTL, InstName); |
| 7256 | + } else { |
| 7257 | + NamedT = getDerived().TransformType(TLB, TL.getNamedTypeLoc()); |
| 7258 | + |
| 7259 | + } |
| 7260 | + |
7220 | 7261 | if (NamedT.isNull())
|
7221 | 7262 | return QualType();
|
7222 | 7263 |
|
|
0 commit comments