[clang] [clang] Fix elaborated keyword canonicalization (PR #135916)
Erich Keane via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 16 09:15:47 PDT 2025
================
@@ -1938,6 +1938,17 @@ TagDecl *Type::getAsTagDecl() const {
return nullptr;
}
+const TemplateSpecializationType *
+Type::getAsNonAliasTemplateSpecializationType() const {
+ for (const auto *T = this; /**/; /**/) {
+ const TemplateSpecializationType *TST =
+ T->getAs<TemplateSpecializationType>();
+ if (!TST || !TST->isTypeAlias())
+ return TST;
+ T = TST->desugar().getTypePtr();
+ }
+}
----------------
erichkeane wrote:
Ah, right, so:
```
const auto *TST = this->getAs<TemplateSpecializationType>();
while (TST && TST->isTypeAlias()) {
TST = TST->desugar()->getAs<TemplateSpecializationType>();
}
return TST;
```
Right? I think that does what you were intending. Effectively a 'while is-type-specialization-type and is-type-alias'.
https://github.com/llvm/llvm-project/pull/135916
More information about the cfe-commits
mailing list