IDEA-109604 Format Groovy code incorrect for IN clause

This commit is contained in:
Max Medvedev
2013-07-03 18:59:58 +04:00
parent 08e62e7934
commit 70f2888a89
2 changed files with 11 additions and 2 deletions
@@ -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 ||
@@ -745,6 +745,9 @@ bar()
''')
}
void testInKeyword() {
checkFormatting('foo in bar', 'foo in bar')
}
private void doGeeseTest() {
GroovyCodeStyleSettings customSettings = myTempSettings.getCustomSettings(GroovyCodeStyleSettings.class);