[clang] Fixing the logic issue in TransformTypos::TransformDesignatedInitExpr… (PR #127211)

Younan Zhang via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 14 06:29:44 PST 2025


================
@@ -13665,21 +13665,22 @@ TreeTransform<Derived>::TransformDesignatedInitExpr(DesignatedInitExpr *E) {
     }
 
     if (D.isArrayDesignator()) {
-      ExprResult Index = getDerived().TransformExpr(E->getArrayIndex(D));
-      if (Index.isInvalid())
+      // Transform the array index expression.
+      ExprResult NewIndex = getDerived().TransformExpr(E->getArrayIndex(D));
+      if (NewIndex.isInvalid())
         return ExprError();
 
-      Desig.AddDesignator(
-          Designator::CreateArrayDesignator(Index.get(), D.getLBracketLoc()));
+      Desig.AddDesignator(Designator::CreateArrayDesignator(
+          NewIndex.get(), D.getLBracketLoc()));
 
-      ExprChanged = ExprChanged || Init.get() != E->getArrayIndex(D);
-      ArrayExprs.push_back(Index.get());
+      // Check if the transformed index is different from the original.
+      ExprChanged = ExprChanged || NewIndex.get() != E->getArrayIndex(D);
+      ArrayExprs.push_back(NewIndex.get());
       continue;
     }
 
     assert(D.isArrayRangeDesignator() && "New kind of designator?");
-    ExprResult Start
-      = getDerived().TransformExpr(E->getArrayRangeStart(D));
+    ExprResult Start = getDerived().TransformExpr(E->getArrayRangeStart(D));
----------------
zyn0217 wrote:

Can you please leave out the unrelated changes?

https://github.com/llvm/llvm-project/pull/127211


More information about the cfe-commits mailing list