mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-120157 Reformat code ignores keep dependent methods together order
This commit is contained in:
@@ -180,12 +180,14 @@ public class JavaRearranger implements Rearranger<JavaElementArrangementEntry>,
|
||||
private static void setupBreadthFirstDependency(@NotNull ArrangementEntryDependencyInfo info) {
|
||||
Deque<ArrangementEntryDependencyInfo> toProcess = new ArrayDeque<ArrangementEntryDependencyInfo>();
|
||||
toProcess.add(info);
|
||||
JavaElementArrangementEntry prev = info.getAnchorEntry();
|
||||
while (!toProcess.isEmpty()) {
|
||||
ArrangementEntryDependencyInfo current = toProcess.removeFirst();
|
||||
for (ArrangementEntryDependencyInfo dependencyInfo : current.getDependentEntriesInfos()) {
|
||||
JavaElementArrangementEntry dependencyMethod = dependencyInfo.getAnchorEntry();
|
||||
if (dependencyMethod.getDependencies() == null) {
|
||||
dependencyMethod.addDependency(current.getAnchorEntry());
|
||||
dependencyMethod.addDependency(prev);
|
||||
prev = dependencyMethod;
|
||||
}
|
||||
toProcess.addLast(dependencyInfo);
|
||||
}
|
||||
|
||||
+133
@@ -236,4 +236,137 @@ class Test {
|
||||
}
|
||||
|
||||
|
||||
void "test dependent methods DFS"() {
|
||||
doTest(
|
||||
initial: '''
|
||||
public class Q {
|
||||
|
||||
void E() {
|
||||
ER();
|
||||
}
|
||||
|
||||
void B() {
|
||||
E();
|
||||
F();
|
||||
}
|
||||
|
||||
void A() {
|
||||
B();
|
||||
C();
|
||||
}
|
||||
|
||||
void F() {
|
||||
}
|
||||
|
||||
void C() {
|
||||
G();
|
||||
}
|
||||
|
||||
void ER() {
|
||||
}
|
||||
|
||||
void G() {
|
||||
}
|
||||
|
||||
}
|
||||
''',
|
||||
expected: '''
|
||||
public class Q {
|
||||
|
||||
void A() {
|
||||
B();
|
||||
C();
|
||||
}
|
||||
void B() {
|
||||
E();
|
||||
F();
|
||||
}
|
||||
void E() {
|
||||
ER();
|
||||
}
|
||||
void ER() {
|
||||
}
|
||||
void F() {
|
||||
}
|
||||
void C() {
|
||||
G();
|
||||
}
|
||||
void G() {
|
||||
}
|
||||
|
||||
}
|
||||
''',
|
||||
groups: [group(DEPENDENT_METHODS, DEPTH_FIRST)]
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
void "test dependent methods BFS"() {
|
||||
doTest(
|
||||
initial: '''
|
||||
public class Q {
|
||||
|
||||
void E() {
|
||||
ER();
|
||||
}
|
||||
|
||||
void B() {
|
||||
E();
|
||||
F();
|
||||
}
|
||||
|
||||
void A() {
|
||||
B();
|
||||
C();
|
||||
}
|
||||
|
||||
void F() {
|
||||
}
|
||||
|
||||
void C() {
|
||||
G();
|
||||
}
|
||||
|
||||
void ER() {
|
||||
}
|
||||
|
||||
void G() {
|
||||
}
|
||||
|
||||
}
|
||||
''',
|
||||
expected: '''
|
||||
public class Q {
|
||||
|
||||
void A() {
|
||||
B();
|
||||
C();
|
||||
}
|
||||
void B() {
|
||||
E();
|
||||
F();
|
||||
}
|
||||
void C() {
|
||||
G();
|
||||
}
|
||||
void E() {
|
||||
ER();
|
||||
}
|
||||
void F() {
|
||||
}
|
||||
void G() {
|
||||
}
|
||||
void ER() {
|
||||
}
|
||||
|
||||
}
|
||||
''',
|
||||
groups: [group(DEPENDENT_METHODS, BREADTH_FIRST)]
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user