Skip to content

Commit 5f46f9c

Browse files
committed
Fixing the logic issue in TransformTypos::TransformDesignatedInitExpr #126113
-Transforming Indices: For array designators, transform the index expression and update ExprChanged if it's modified. -Correct Initializer Check: Compare the transformed initializer against the original to accurately track changes. -Single Initializer Transformation: The initializer is processed once, not per designator, as each DesignatedInitExpr has one initializer. Fixes #126113
1 parent 2077d40 commit 5f46f9c

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

clang/lib/Sema/TreeTransform.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13665,15 +13665,15 @@ TreeTransform<Derived>::TransformDesignatedInitExpr(DesignatedInitExpr *E) {
1366513665
}
1366613666

1366713667
if (D.isArrayDesignator()) {
13668-
ExprResult Index = getDerived().TransformExpr(E->getArrayIndex(D));
13669-
if (Index.isInvalid())
13668+
ExprResult NewIndex = getDerived().TransformExpr(E->getArrayIndex(D));
13669+
if (NewIndex.isInvalid())
1367013670
return ExprError();
1367113671

13672-
Desig.AddDesignator(
13673-
Designator::CreateArrayDesignator(Index.get(), D.getLBracketLoc()));
13672+
Desig.AddDesignator(Designator::CreateArrayDesignator(
13673+
NewIndex.get(), D.getLBracketLoc()));
1367413674

13675-
ExprChanged = ExprChanged || Init.get() != E->getArrayIndex(D);
13676-
ArrayExprs.push_back(Index.get());
13675+
ExprChanged = ExprChanged || NewIndex.get() != E->getArrayIndex(D);
13676+
ArrayExprs.push_back(NewIndex.get());
1367713677
continue;
1367813678
}
1367913679

0 commit comments

Comments
 (0)