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 fb44a2b7fc2..72400cfe0e2 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 @@ -1603,8 +1603,7 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor, private int visit(IASTArrayDeclarator node) { IASTArrayModifier[] arrayModifiers= node.getArrayModifiers(); if (arrayModifiers != null) { - for (IASTArrayModifier arrayModifier2 : arrayModifiers) { - IASTArrayModifier arrayModifier = arrayModifier2; + for (IASTArrayModifier arrayModifier : arrayModifiers) { scribe.printNextToken(Token.tLBRACKET, preferences.insert_space_before_opening_bracket); boolean emptyBrackets= arrayModifier.getConstantExpression() == null && !(arrayModifier instanceof ICASTArrayModifier); @@ -1625,10 +1624,13 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor, scribe.space(); } } + Runnable tailFormatter = scribe.takeTailFormatter(); try { arrayModifier.accept(this); } catch (ASTProblemException e) { scribe.skipToToken(Token.tRBRACKET); + } finally { + scribe.setTailFormatter(tailFormatter); } boolean insertSpace= emptyBrackets ? preferences.insert_space_between_empty_brackets : 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 e8255213381..2ffe4df3e33 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 @@ -2518,4 +2518,23 @@ public class CodeFormatterTest extends BaseUITestCase { String expected= before; assertFormatterResult(before, expected); } + + //#define SIZE 5 + //char s0[5]; + //char s1[1+1]; + //char s2[SIZE]; + //char s3[SIZE+1]; + //char s4[SIZE+SIZE]; + //char s5[1+SIZE]; + + //#define SIZE 5 + //char s0[5]; + //char s1[1 + 1]; + //char s2[SIZE]; + //char s3[SIZE + 1]; + //char s4[SIZE + SIZE]; + //char s5[1 + SIZE]; + public void testExpressionInArrayDeclarator_Bug350816() throws Exception { + assertFormatterResult(); + } }