From e7705d6159be329670db8f4d5462aabc34f5f45d Mon Sep 17 00:00:00 2001 From: Yaroslav Lepenkin Date: Mon, 22 Sep 2014 11:18:12 +0400 Subject: [PATCH] Be aware of "Keep line breaks" option in class object access expression (part of IDEA-129687) --- .../java/JavaSpacePropertyProcessor.java | 9 ++++++++ .../java/JavaFormatterSpaceTest.java | 21 +++++++++++++++++++ 2 files changed, 30 insertions(+) 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 5230805aa03c..d26bc49c10a0 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 @@ -1186,6 +1186,15 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor { } } + @Override + public void visitClassObjectAccessExpression(PsiClassObjectAccessExpression expression) { + if (myRole1 == ChildRole.TYPE && myRole2 == ChildRole.DOT + || myRole1 == ChildRole.DOT && myRole2 == ChildRole.CLASS_KEYWORD) + { + createSpaceInCode(false); + } + } + @Override public void visitExpressionList(PsiExpressionList list) { if (myRole1 == ChildRole.LPARENTH && myRole2 == ChildRole.RPARENTH) { 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 c4cd499ccd96..c01395b66869 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 @@ -558,4 +558,25 @@ public class JavaFormatterSpaceTest extends AbstractJavaFormatterTest { "}" ); } + + public void testClassObjectAccessExpression_BeforeDot() { + String before = "Test \n .class"; + + getSettings().KEEP_LINE_BREAKS = true; + doMethodTest(before, "Test\n .class"); + + getSettings().KEEP_LINE_BREAKS = false; + doMethodTest(before, "Test.class"); + } + + public void testClassObjectAccessExpression_AfterDot() { + String before = "Test. \n class"; + + getSettings().KEEP_LINE_BREAKS = true; + doMethodTest(before, "Test.\n class"); + + getSettings().KEEP_LINE_BREAKS = false; + doMethodTest(before, "Test.class"); + } + }