mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
revert IDEA-123049 Rearrange Code is breaking code (Code Style > Java > Arrangement)
(1162eb1847)
This commit is contained in:
+40
-3
@@ -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();
|
||||
|
||||
-48
@@ -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)]
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user