From 798af8ff982ecbbad7067e8157cb12c5fc3a501b Mon Sep 17 00:00:00 2001 From: Denis Zhdanov Date: Thu, 21 Jul 2011 16:15:32 +0400 Subject: [PATCH] IDEA-72321 Java Formatter: Respect 'space before method call parentheses' for anonymous class constructor --- .../java/JavaSpacePropertyProcessor.java | 9 +++++++-- .../formatter/java/JavaFormatterSpaceTest.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java index a20263688e1f..94280c15d7d3 100644 --- a/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java +++ b/java/java-impl/src/com/intellij/psi/formatter/java/JavaSpacePropertyProcessor.java @@ -241,7 +241,7 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { } else if (aClass instanceof PsiAnonymousClass && ElementType.JAVA_PLAIN_COMMENT_BIT_SET.contains(myChild1.getElementType())) { ASTNode prev = myChild1.getTreePrev(); - if (prev.getElementType() == JavaTokenType.WHITE_SPACE && !StringUtil.containsLineBreak(prev.getChars())) { + if (prev.getElementType() == TokenType.WHITE_SPACE && !StringUtil.containsLineBreak(prev.getChars())) { prev = prev.getTreePrev(); } if (prev.getElementType() == JavaTokenType.LBRACE) { @@ -252,7 +252,12 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { processClassBody(); } } - else processClassBody(); + else if (aClass instanceof PsiAnonymousClass && myRole2 == ChildRole.ARGUMENT_LIST) { + createSpaceInCode(mySettings.SPACE_BEFORE_METHOD_CALL_PARENTHESES); + } + else { + processClassBody(); + } } private static boolean isTheOnlyClassMember(final ASTNode node) { diff --git a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterSpaceTest.java b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterSpaceTest.java index 2d7efac3b575..6000ad164bd3 100644 --- a/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterSpaceTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/formatter/java/JavaFormatterSpaceTest.java @@ -366,4 +366,20 @@ public class JavaFormatterSpaceTest extends AbstractJavaFormatterTest { "foo(1,2,3);" ); } + + public void testBeforeAnonymousClassConstructor() throws Exception { + // Inspired by IDEA-72321. + getSettings().SPACE_BEFORE_METHOD_CALL_PARENTHESES = true; + + doMethodTest( + "actions.add(new Action(this) {\n" + + " public void run() {\n" + + " }\n" + + "});", + "actions.add (new Action (this) {\n" + + " public void run() {\n" + + " }\n" + + "});" + ); + } }