Use formatter settings for multi-catch type element

This commit is contained in:
Roman Shevchenko
2011-03-01 20:34:17 +01:00
parent d80df2d60d
commit f627677fdd
2 changed files with 26 additions and 4 deletions
@@ -68,8 +68,10 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor {
init(child);
mySettings = settings;
if (myChild1.getPsi().getLanguage() != StdLanguages.JAVA ||
myChild2.getPsi().getLanguage() != StdLanguages.JAVA) {
final PsiElement myChild1Psi1 = myChild1.getPsi();
final PsiElement myChild1Psi2 = myChild2.getPsi();
if (myChild1Psi1 == null || myChild1Psi1.getLanguage() != StdLanguages.JAVA ||
myChild1Psi2 == null || myChild1Psi2.getLanguage() != StdLanguages.JAVA) {
return;
}
@@ -492,8 +494,8 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor {
ElementType.IMPORT_STATEMENT_BASE_BIT_SET.contains(myChild2.getElementType())) {
if (myImportHelper == null) myImportHelper = new ImportHelper(mySettings);
int emptyLines = myImportHelper.getEmptyLinesBetween(
(PsiImportStatementBase)SourceTreeToPsiMap.treeElementToPsi(myChild1),
(PsiImportStatementBase)SourceTreeToPsiMap.treeElementToPsi(myChild2)
SourceTreeToPsiMap.<PsiImportStatementBase>treeToPsiNotNull(myChild1),
SourceTreeToPsiMap.<PsiImportStatementBase>treeToPsiNotNull(myChild2)
) + 1;
myResult = Spacing.createSpacing(0, 0, emptyLines,
mySettings.KEEP_LINE_BREAKS,
@@ -1339,6 +1341,9 @@ public class JavaSpacePropertyProcessor extends JavaElementVisitor {
else if (myChild2.getElementType() == JavaTokenType.LBRACKET || myChild2.getElementType() == JavaTokenType.RBRACKET) {
createSpaceInCode(false);
}
else if (type.getType() instanceof PsiDisjunctionType) {
createSpaceInCode(mySettings.SPACE_AROUND_BITWISE_OPERATORS);
}
else {
createSpaceInCode(true);
}
@@ -15,6 +15,9 @@
*/
package com.intellij.psi.formatter.java;
import com.intellij.openapi.roots.LanguageLevelProjectExtension;
import com.intellij.pom.java.LanguageLevel;
/**
* Is intended to hold specific java formatting tests for 'spacing' settings.
*
@@ -285,4 +288,18 @@ public class JavaFormatterSpaceTest extends AbstractJavaFormatterTest {
"for (; ; )"
);
}
public void testSpacesInDisjunctiveType() throws Exception {
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
getSettings().KEEP_SIMPLE_BLOCKS_IN_ONE_LINE = true;
getSettings().CATCH_ON_NEW_LINE = false;
getSettings().SPACE_AROUND_BITWISE_OPERATORS = true;
doMethodTest("try { } catch (E1|E2 e) { }",
"try { } catch (E1 | E2 e) { }");
getSettings().SPACE_AROUND_BITWISE_OPERATORS = false;
doMethodTest("try { } catch (E1 | E2 e) { }",
"try { } catch (E1|E2 e) { }");
}
}