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"); + } + }