[clang] [Clang] Don't assert on substituted-but-yet-expanded packs for nested lambdas (PR #112896)
Younan Zhang via cfe-commits
cfe-commits at lists.llvm.org
Sun Oct 20 20:00:05 PDT 2024
================
@@ -8385,14 +8385,19 @@ TreeTransform<Derived>::TransformDeclStmt(DeclStmt *S) {
if (Transformed != D)
DeclChanged = true;
- if (LSI && isa<TypeDecl>(Transformed))
- LSI->ContainsUnexpandedParameterPack |=
- getSema()
- .getASTContext()
- .getTypeDeclType(cast<TypeDecl>(Transformed))
- .getCanonicalType()
- .getTypePtr()
- ->containsUnexpandedParameterPack();
+ if (LSI) {
+ if (auto *TD = dyn_cast<TypeDecl>(Transformed))
+ LSI->ContainsUnexpandedParameterPack |=
+ getSema()
+ .getASTContext()
+ .getTypeDeclType(TD)
+ .getCanonicalType()
+ ->containsUnexpandedParameterPack();
+
+ if (auto *VD = dyn_cast<VarDecl>(Transformed))
+ LSI->ContainsUnexpandedParameterPack |=
+ VD->getType()->containsUnexpandedParameterPack();
+ }
----------------
zyn0217 wrote:
I'm not sure if I understand "tracking unexpanded packs lexically". Do you have a link to that context? It sounds like we need a new bit to track that in Decls, despite that flag being accessible through their QualTypes' dependencies for the status quo. In the latter regard, it looks like we just need a shortcut method for it?
https://github.com/llvm/llvm-project/pull/112896
More information about the cfe-commits
mailing list