From 1f9bdc3019479026fd2ec641eda001e7072910fe Mon Sep 17 00:00:00 2001 From: Anton Leherbauer Date: Fri, 5 Aug 2011 12:44:03 +0200 Subject: [PATCH] Bug 353974 - Formatting C code does not work for certain uses of static_cast --- .../internal/formatter/CodeFormatterVisitor.java | 7 ++++++- .../cdt/ui/tests/text/CodeFormatterTest.java | 14 ++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) 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 b87b971024e..132590cf1c8 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 @@ -2366,7 +2366,12 @@ public class CodeFormatterVisitor extends ASTVisitor implements ICPPASTVisitor, if (preferences.insert_space_after_opening_paren_in_method_invocation) { scribe.space(); } - node.getOperand().accept(this); + Runnable tailFormatter = scribe.takeTailFormatter(); + try { + node.getOperand().accept(this); + } finally { + scribe.setTailFormatter(tailFormatter); + } scribe.printNextToken(Token.tRPAREN, preferences.insert_space_before_closing_paren_in_method_invocation); break; default: 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 9945dea164e..7fafcd2d54a 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 @@ -2480,4 +2480,18 @@ public class CodeFormatterTest extends BaseUITestCase { fOptions.putAll(DefaultCodeFormatterOptions.getAllmanSettings().getMap()); assertFormatterResult(); } + + //void f() { + // int i = static_cast(5+1); + // int j; + //} + + //void f() { + // int i = static_cast(5 + 1); + // int j; + //} + public void testStaticCastInInitializer_Bug353974() throws Exception { + assertFormatterResult(); + } + }