[PATCH] D153699: [clang] Fix pretty-printing for variables declared in a for-loop condition
Fangrui Song via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 25 08:28:56 PDT 2023
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGdf8d6d95ca64: [clang] Fix pretty-printing for variables declared in a for-loop condition (authored by vaithak, committed by MaskRay).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153699/new/
https://reviews.llvm.org/D153699
Files:
clang/lib/AST/StmtPrinter.cpp
clang/test/PCH/for-loop-init-ternary-operator-statement.cpp
clang/test/SemaCXX/ast-print.cpp
Index: clang/test/SemaCXX/ast-print.cpp
===================================================================
--- clang/test/SemaCXX/ast-print.cpp
+++ clang/test/SemaCXX/ast-print.cpp
@@ -21,12 +21,14 @@
// CHECK: if (int a = 1)
// CHECK: while (int a = 1)
// CHECK: switch (int a = 1)
+// CHECK: for (; int a = 1;)
void test2()
{
if (int a = 1) { }
while (int a = 1) { }
switch (int a = 1) { }
+ for(; int a = 1; ) { }
}
// CHECK: new (1) int;
Index: clang/test/PCH/for-loop-init-ternary-operator-statement.cpp
===================================================================
--- clang/test/PCH/for-loop-init-ternary-operator-statement.cpp
+++ clang/test/PCH/for-loop-init-ternary-operator-statement.cpp
@@ -2,7 +2,7 @@
// RUN: %clang_cc1 -x ast -ast-print %t | FileCheck %s
int f() {
- // CHECK: for (int i = 0; x; i++) {
+ // CHECK: for (int i = 0; int x = i < 2 ? 1 : 0; i++) {
for (int i = 0; int x = i < 2 ? 1 : 0; i++) {
return x;
}
Index: clang/lib/AST/StmtPrinter.cpp
===================================================================
--- clang/lib/AST/StmtPrinter.cpp
+++ clang/lib/AST/StmtPrinter.cpp
@@ -400,7 +400,9 @@
PrintInitStmt(Node->getInit(), 5);
else
OS << (Node->getCond() ? "; " : ";");
- if (Node->getCond())
+ if (const DeclStmt *DS = Node->getConditionVariableDeclStmt())
+ PrintRawDeclStmt(DS);
+ else if (Node->getCond())
PrintExpr(Node->getCond());
OS << ";";
if (Node->getInc()) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153699.534342.patch
Type: text/x-patch
Size: 1492 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230625/a1e4cfee/attachment-0001.bin>
More information about the cfe-commits
mailing list