diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java index ff05296897e..765cf5c7e55 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/formatter/CodeFormatterVisitor.java @@ -4108,22 +4108,22 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor, private void formatStatements(final List statements, boolean insertNewLineAfterLastStatement) { final int statementsLength= statements.size(); if (statementsLength > 1) { - IASTStatement previousStatement= statements.get(0); + IASTStatement firstStatement= statements.get(0); try { - previousStatement.accept(this); + firstStatement.accept(this); } catch (ASTProblemException e) { skipToNode(statements.get(1)); } final int indentLevel= scribe.indentationLevel; for (int i = 1; i < statementsLength - 1; i++) { final IASTStatement statement= statements.get(i); - if (!startNode(statement)) { - continue; - } if (!(statement instanceof IASTNullStatement) && !doNodeLocationsOverlap(statement, statements.get(i - 1))) { scribe.startNewLine(); } + if (!startNode(statement)) { + continue; + } try { statement.accept(this); } catch (RuntimeException e) { @@ -4140,7 +4140,6 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor, scribe.unIndent(); } } - previousStatement= statement; } final IASTStatement statement= statements.get(statementsLength - 1); final boolean statementIsNullStmt= statement instanceof IASTNullStatement; diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java index ef207f78c7f..83505699342 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/CodeFormatterTest.java @@ -2657,4 +2657,18 @@ public class CodeFormatterTest extends BaseUITestCase { public void testMacroInElseBranch_Bug350689() throws Exception { assertFormatterResult(); } + + //#define IF(cond) if(cond){} + //void f() { if(1){}IF(1>0);} + + //#define IF(cond) if(cond){} + //void f() { + // if (1) { + // } + // IF(1>0); + //} + public void testMacroAfterCompoundStatement_Bug356690() throws Exception { + assertFormatterResult(); + } + }