From 70f2888a896078e49bb4c35aa4dc90dd31ee7d8f Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Wed, 3 Jul 2013 18:59:18 +0400 Subject: [PATCH] IDEA-109604 Format Groovy code incorrect for IN clause --- .../formatter/processors/GroovySpacingProcessor.java | 10 ++++++++-- .../plugins/groovy/lang/formatter/FormatterTest.groovy | 3 +++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/processors/GroovySpacingProcessor.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/processors/GroovySpacingProcessor.java index 89eb21e8ff93..5b8be8eb10b2 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/processors/GroovySpacingProcessor.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/formatter/processors/GroovySpacingProcessor.java @@ -67,6 +67,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeParameterList; import static org.jetbrains.plugins.groovy.GroovyFileType.GROOVY_LANGUAGE; import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.*; import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.GROOVY_DOC_COMMENT; +import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.kIN; import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.mCOMMA; import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.mELVIS; import static org.jetbrains.plugins.groovy.formatter.models.spacing.SpacingTokens.mGDOC_COMMENT_DATA; @@ -363,7 +364,7 @@ public class GroovySpacingProcessor extends GroovyElementVisitor { else if (myType2 == PACKAGE_DEFINITION) { myResult = Spacing.createSpacing(0, 0, mySettings.BLANK_LINES_BEFORE_PACKAGE + 1, mySettings.KEEP_LINE_BREAKS, Integer.MAX_VALUE / 2); } - else if (TYPE_DEFINITION_TYPES.contains(myType1) || TYPE_DEFINITION_TYPES.contains(myType2)) { + else if (isLeftOrRight(TYPE_DEFINITION_TYPES)) { if (myType1 == GROOVY_DOC_COMMENT) { createLF(true); } @@ -748,6 +749,7 @@ public class GroovySpacingProcessor extends GroovyElementVisitor { @Override public void visitBinaryExpression(GrBinaryExpression expression) { + @SuppressWarnings("SimplifiableConditionalExpression" ) boolean spaceAround = isLeftOrRight(LOGICAL_OPERATORS) ? mySettings.SPACE_AROUND_LOGICAL_OPERATORS : isLeftOrRight(EQUALITY_OPERATORS) ? mySettings.SPACE_AROUND_EQUALITY_OPERATORS : @@ -756,7 +758,7 @@ public class GroovySpacingProcessor extends GroovyElementVisitor { isLeftOrRight(ADDITIVE_OPERATORS) ? mySettings.SPACE_AROUND_ADDITIVE_OPERATORS : isLeftOrRight(MULTIPLICATIVE_OPERATORS) ? mySettings.SPACE_AROUND_MULTIPLICATIVE_OPERATORS : isLeftOrRight(SHIFT_OPERATORS) ? mySettings.SPACE_AROUND_SHIFT_OPERATORS : - false; + isLeftOrRight(kIN); if (TokenSets.BINARY_OP_SET.contains(myType2)) { createDependentLFSpacing(mySettings.BINARY_OPERATION_SIGN_ON_NEXT_LINE, spaceAround, expression.getTextRange()); } @@ -769,6 +771,10 @@ public class GroovySpacingProcessor extends GroovyElementVisitor { return operators.contains(myType1) || operators.contains(myType2); } + private boolean isLeftOrRight(IElementType type) { + return myType1 == type || myType2 == type; + } + @Override public void visitUnaryExpression(GrUnaryExpression expression) { if (!expression.isPostfix() && expression.getOperationToken() == myChild1 || diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy index a7ec28a706f3..4807a566255a 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/formatter/FormatterTest.groovy @@ -745,6 +745,9 @@ bar() ''') } + void testInKeyword() { + checkFormatting('foo in bar', 'foo in bar') + } private void doGeeseTest() { GroovyCodeStyleSettings customSettings = myTempSettings.getCustomSettings(GroovyCodeStyleSettings.class);