revert IDEA-123049 Rearrange Code is breaking code (Code Style > Java > Arrangement)

(1162eb1847)
This commit is contained in:
Yaroslav Lepenkin
2014-04-25 22:14:37 +04:00
parent f62183c0b1
commit 4155907c5d
2 changed files with 40 additions and 51 deletions
@@ -35,7 +35,7 @@ import java.util.*;
import static com.intellij.psi.codeStyle.arrangement.std.StdArrangementTokens.EntryType.*;
import static com.intellij.psi.codeStyle.arrangement.std.StdArrangementTokens.Modifier.*;
public class JavaArrangementVisitor extends JavaRecursiveElementVisitor {
public class JavaArrangementVisitor extends JavaElementVisitor {
private static final String NULL_CONTENT = "no content";
@@ -98,6 +98,13 @@ public class JavaArrangementVisitor extends JavaRecursiveElementVisitor {
processEntry(entry, null, aClass);
}
@Override
public void visitJavaFile(PsiJavaFile file) {
for (PsiClass psiClass : file.getClasses()) {
visitClass(psiClass);
}
}
@Override
public void visitField(PsiField field) {
// There is a possible case that more than one field is declared for the same type like 'int i, j;'. We want to process only
@@ -341,6 +348,36 @@ public class JavaArrangementVisitor extends JavaRecursiveElementVisitor {
}
}
@Override
public void visitExpressionStatement(PsiExpressionStatement statement) {
statement.getExpression().acceptChildren(this);
}
@Override
public void visitNewExpression(PsiNewExpression expression) {
PsiAnonymousClass anonymousClass = expression.getAnonymousClass();
if (anonymousClass == null) {
return;
}
JavaElementArrangementEntry entry =
createNewEntry(anonymousClass, anonymousClass.getTextRange(), CLASS, anonymousClass.getName(), false);
processEntry(entry, null, anonymousClass);
}
@Override
public void visitExpressionList(PsiExpressionList list) {
for (PsiExpression expression : list.getExpressions()) {
expression.acceptChildren(this);
}
}
@Override
public void visitDeclarationStatement(PsiDeclarationStatement statement) {
for (PsiElement element : statement.getDeclaredElements()) {
element.acceptChildren(this);
}
}
private void processEntry(@Nullable JavaElementArrangementEntry entry,
@Nullable PsiModifierListOwner modifier,
@Nullable PsiElement nextPsiRoot)
@@ -427,7 +464,7 @@ public class JavaArrangementVisitor extends JavaRecursiveElementVisitor {
}
private static class MethodBodyProcessor extends JavaRecursiveElementVisitor {
@NotNull private final JavaArrangementParseInfo myInfo;
@Nullable private PsiMethod myBaseMethod;
@@ -448,7 +485,7 @@ public class JavaArrangementVisitor extends JavaRecursiveElementVisitor {
myInfo.registerMethodCallDependency(myBaseMethod, m);
}
}
// We process all method call expression children because there is a possible case like below:
// new Runnable() {
// void test();
@@ -15,8 +15,6 @@
*/
package com.intellij.psi.codeStyle.arrangement
import static com.intellij.psi.codeStyle.arrangement.std.StdArrangementTokens.EntryType.*
class JavaRearrangerAnonymousClassesTest extends AbstractJavaRearrangerTest {
public void "test rearrangement doesn't brake anon classes alignment"() {
@@ -44,56 +42,10 @@ public class Test {
)
}
public void "test anonymous classes inside method"() {
doTest(
initial: '''\
public class Rearranging {
public void Testing() {
class Model {
private Cat cat = new Cat();
private Dog dog = new Dog();
class Cat { private String catSound = "MIAU"; }
class Dog { private String dogSound = "AUAU"; }
}
class Born { private String date; }
class Die { private String date; }
}
private int value;
}
''',
expected: '''\
public class Rearranging {
private int value;
public void Testing() {
class Model {
private Cat cat = new Cat();
private Dog dog = new Dog();
class Cat { private String catSound = "MIAU"; }
class Dog { private String dogSound = "AUAU"; }
}
class Born { private String date; }
class Die { private String date; }
}
}
''',
rules: [rule(FIELD),
rule(ENUM),
rule(INTERFACE),
rule(CLASS),
rule(CONSTRUCTOR),
rule(METHOD)]
)
}
}