@@ -1731,21 +1731,21 @@ namespace {
17311731 return inherited::TransformLambdaBody (E, Body);
17321732 }
17331733
1734- ExprResult RebuildSizeOfPackExpr (SourceLocation OperatorLoc,
1735- NamedDecl *Pack, SourceLocation PackLoc,
1736- SourceLocation RParenLoc,
1737- std::optional<unsigned > Length,
1738- ArrayRef<TemplateArgument> PartialArgs) {
1739- Decl *NewPack = Pack;
1734+ ExprResult TransformSizeOfPackExpr (SizeOfPackExpr *E) {
1735+ ExprResult Transformed = inherited::TransformSizeOfPackExpr (E);
1736+ if (!Transformed.isUsable ())
1737+ return Transformed;
1738+ auto *TransformedExpr = cast<SizeOfPackExpr>(Transformed.get ());
17401739 if (SemaRef.CodeSynthesisContexts .back ().Kind ==
1741- Sema::CodeSynthesisContext::ConstraintNormalization) {
1742- NewPack = TransformDecl (PackLoc, Pack);
1740+ Sema::CodeSynthesisContext::ConstraintNormalization &&
1741+ TransformedExpr->getPack () == E->getPack ()) {
1742+ Decl *NewPack =
1743+ TransformDecl (E->getPackLoc (), TransformedExpr->getPack ());
17431744 if (!NewPack)
17441745 return ExprError ();
1746+ TransformedExpr->setPack (cast<NamedDecl>(NewPack));
17451747 }
1746- return inherited::RebuildSizeOfPackExpr (OperatorLoc,
1747- cast<NamedDecl>(NewPack), PackLoc,
1748- RParenLoc, Length, PartialArgs);
1748+ return TransformedExpr;
17491749 }
17501750
17511751 ExprResult TransformRequiresExpr (RequiresExpr *E) {
0 commit comments