KT-4018 When moving members move comments too

This commit is contained in:
Alexey Sedunov
2013-10-14 15:39:25 +04:00
parent 28b3db53fe
commit 71a0d4cc45
116 changed files with 478 additions and 58 deletions
@@ -21,20 +21,30 @@ public abstract class AbstractJetUpDownMover extends LineMover {
} }
protected abstract boolean checkSourceElement(@NotNull PsiElement element); protected abstract boolean checkSourceElement(@NotNull PsiElement element);
protected abstract LineRange getElementSourceLineRange(@NotNull PsiElement element, @NotNull Editor editor, @NotNull LineRange oldRange);
protected abstract LineRange getElementSourceLineRange(
@NotNull PsiElement element,
@NotNull Editor editor,
@NotNull LineRange oldRange
);
protected PsiElement adjustElement(PsiElement element, Editor editor, boolean first) {
return element;
}
protected final Pair<PsiElement, PsiElement> adjustElementRange(Pair<PsiElement, PsiElement> elementRange, Editor editor) {
PsiElement first = adjustElement(elementRange.first, editor, true);
PsiElement second = adjustElement(elementRange.second, editor, false);
return new Pair<PsiElement, PsiElement>(first, second);
}
@Nullable @Nullable
protected LineRange getSourceRange(@NotNull PsiElement firstElement, @NotNull PsiElement lastElement, @NotNull Editor editor, LineRange oldRange) { protected LineRange getSourceRange(
if (firstElement == lastElement) { @NotNull PsiElement firstElement,
LineRange sourceRange = getElementSourceLineRange(firstElement, editor, oldRange); @NotNull PsiElement lastElement,
@NotNull Editor editor,
if (sourceRange != null) { LineRange oldRange
sourceRange.firstElement = sourceRange.lastElement = firstElement; ) {
}
return sourceRange;
}
PsiElement parent = PsiTreeUtil.findCommonParent(firstElement, lastElement); PsiElement parent = PsiTreeUtil.findCommonParent(firstElement, lastElement);
int topExtension = 0; int topExtension = 0;
@@ -50,7 +60,8 @@ public abstract class AbstractJetUpDownMover extends LineMover {
comment = lastElement; comment = lastElement;
extendDown = true; extendDown = true;
lastElement = block.getLastChild(); lastElement = block.getLastChild();
} else if (checkCommentAtBlockBound(lastElement, firstElement, block)) { }
else if (checkCommentAtBlockBound(lastElement, firstElement, block)) {
comment = firstElement; comment = firstElement;
firstElement = block.getFirstChild(); firstElement = block.getFirstChild();
} }
@@ -72,11 +83,12 @@ public abstract class AbstractJetUpDownMover extends LineMover {
if (parent == null) return null; if (parent == null) return null;
Pair<PsiElement, PsiElement> combinedRange = getElementRange(parent, firstElement, lastElement); Pair<PsiElement, PsiElement> originalRange = getElementRange(parent, firstElement, lastElement);
Pair<PsiElement, PsiElement> combinedRange = adjustElementRange(originalRange, editor);
if (combinedRange == null if (combinedRange == null
|| !checkSourceElement(combinedRange.first) || !checkSourceElement(originalRange.first)
|| !checkSourceElement(combinedRange.second)) { || !checkSourceElement(originalRange.second)) {
return null; return null;
} }
@@ -89,9 +101,14 @@ public abstract class AbstractJetUpDownMover extends LineMover {
LineRange parentLineRange = getElementSourceLineRange(parent, editor, oldRange); LineRange parentLineRange = getElementSourceLineRange(parent, editor, oldRange);
LineRange sourceRange = new LineRange(lineRange1.startLine - topExtension, lineRange2.endLine + bottomExtension); LineRange sourceRange = new LineRange(lineRange1.startLine - topExtension, lineRange2.endLine + bottomExtension);
if (parentLineRange != null && sourceRange.contains(parentLineRange)) {
if (parentLineRange != null
&& sourceRange.startLine == parentLineRange.startLine
&& sourceRange.endLine == parentLineRange.endLine
) {
sourceRange.firstElement = sourceRange.lastElement = parent; sourceRange.firstElement = sourceRange.lastElement = parent;
} else { }
else {
sourceRange.firstElement = combinedRange.first; sourceRange.firstElement = combinedRange.first;
sourceRange.lastElement = combinedRange.second; sourceRange.lastElement = combinedRange.second;
} }
@@ -107,10 +107,12 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
} }
@Nullable @Nullable
private static PsiElement skipInsignificantElements(@NotNull PsiElement element, boolean down) { private static PsiElement skipInsignificantElements(@Nullable PsiElement element, boolean down) {
if (element == null) return null;
PsiElement result = element; PsiElement result = element;
while (result instanceof PsiWhiteSpace || result.getTextLength() == 0) { while (result instanceof PsiWhiteSpace || result instanceof PsiComment || result.getTextLength() == 0) {
result = down ? result.getNextSibling() : result.getPrevSibling(); result = down ? result.getNextSibling() : result.getPrevSibling();
if (result == null) break; if (result == null) break;
} }
@@ -120,12 +122,19 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
@Override @Override
protected LineRange getElementSourceLineRange(@NotNull PsiElement element, @NotNull Editor editor, @NotNull LineRange oldRange) { protected LineRange getElementSourceLineRange(@NotNull PsiElement element, @NotNull Editor editor, @NotNull LineRange oldRange) {
JetDeclaration declaration = (JetDeclaration) element; PsiElement first;
PsiElement last;
PsiElement first = skipInsignificantElements(declaration.getFirstChild(), true); if (element instanceof JetDeclaration) {
PsiElement last = skipInsignificantElements(declaration.getLastChild(), false); first = skipInsignificantElements(element.getFirstChild(), true);
last = skipInsignificantElements(element.getLastChild(), false);
if (first == null || last == null) return null;
}
else {
first = last = element;
}
if (first == null || last == null) return null;
TextRange textRange1 = first.getTextRange(); TextRange textRange1 = first.getTextRange();
TextRange textRange2 = last.getTextRange(); TextRange textRange2 = last.getTextRange();
@@ -137,21 +146,29 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
int startLine = editor.offsetToLogicalPosition(textRange1.getStartOffset()).line; int startLine = editor.offsetToLogicalPosition(textRange1.getStartOffset()).line;
int endLine = editor.offsetToLogicalPosition(textRange2.getEndOffset()).line + 1; int endLine = editor.offsetToLogicalPosition(textRange2.getEndOffset()).line + 1;
if (startLine == oldRange.startLine || startLine == oldRange.endLine if (element instanceof PsiComment
|| startLine == oldRange.startLine || startLine == oldRange.endLine
|| endLine == oldRange.startLine || endLine == oldRange.endLine) { || endLine == oldRange.startLine || endLine == oldRange.endLine) {
return new LineRange(startLine, endLine); return new LineRange(startLine, endLine);
} }
TextRange lineTextRange = new TextRange(doc.getLineStartOffset(oldRange.startLine), TextRange lineTextRange = new TextRange(doc.getLineStartOffset(oldRange.startLine),
doc.getLineEndOffset(oldRange.endLine)); doc.getLineEndOffset(oldRange.endLine));
for (PsiElement anchor : getDeclarationAnchors(declaration)) { if (element instanceof JetDeclaration) {
TextRange suspectTextRange = anchor.getTextRange(); for (PsiElement anchor : getDeclarationAnchors((JetDeclaration) element)) {
if (suspectTextRange != null && lineTextRange.intersects(suspectTextRange)) return new LineRange(startLine, endLine); TextRange suspectTextRange = anchor.getTextRange();
if (suspectTextRange != null && lineTextRange.intersects(suspectTextRange)) return new LineRange(startLine, endLine);
}
} }
return null; return null;
} }
@Override
protected PsiElement adjustElement(PsiElement element, Editor editor, boolean first) {
return first ? getTopmostSiblingCommentOrOriginal(element, editor) : element;
}
@Nullable @Nullable
private static LineRange getTargetRange( private static LineRange getTargetRange(
@NotNull Editor editor, @NotNull Editor editor,
@@ -164,6 +181,10 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
PsiElement nextParent = null; PsiElement nextParent = null;
if (target instanceof PsiComment) {
target = PsiTreeUtil.getNextSiblingOfType(target, JetDeclaration.class);
}
// moving out of code block // moving out of code block
if (sibling.getNode().getElementType() == (down ? JetTokens.RBRACE : JetTokens.LBRACE)) { if (sibling.getNode().getElementType() == (down ? JetTokens.RBRACE : JetTokens.LBRACE)) {
// elements which aren't immediately placed in class body can't leave the block // elements which aren't immediately placed in class body can't leave the block
@@ -181,15 +202,24 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
} }
// moving into code block // moving into code block
// element may move only into class body // element may move only into class body
else if (sibling instanceof JetClassOrObject) { else {
JetClassOrObject jetClassOrObject = (JetClassOrObject) sibling; PsiElement adjustedSibling = sibling;
JetClassBody classBody = jetClassOrObject.getBody(); if (adjustedSibling instanceof PsiComment || isEmptyNamespaceHeader(adjustedSibling)) {
adjustedSibling = PsiTreeUtil.getNextSiblingOfType(adjustedSibling, JetDeclaration.class);
}
// confined elements can't leave their block if (adjustedSibling instanceof JetClassOrObject) {
if (classBody != null) { JetClassOrObject jetClassOrObject = (JetClassOrObject) adjustedSibling;
nextParent = classBody; JetClassBody classBody = jetClassOrObject.getBody();
start = down ? jetClassOrObject : classBody.getRBrace();
end = down ? classBody.getLBrace() : classBody.getRBrace(); // confined elements can't leave their block
if (classBody != null) {
nextParent = classBody;
if (!down) {
start = classBody.getRBrace();
}
end = down ? classBody.getLBrace() : classBody.getRBrace();
}
} }
} }
@@ -208,16 +238,30 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
if (target instanceof JetPropertyAccessor && !(sibling instanceof JetPropertyAccessor)) return null; if (target instanceof JetPropertyAccessor && !(sibling instanceof JetPropertyAccessor)) return null;
if (start != null && start.getFirstChild() != null) { if (!down && start instanceof JetDeclaration) {
start = getTopmostSiblingCommentOrOriginal(start, editor);
}
else if (start != null && start.getFirstChild() != null) {
start = skipInsignificantElements(start.getFirstChild(), true); start = skipInsignificantElements(start.getFirstChild(), true);
} }
if (end != null && end.getFirstChild() != null) {
if (down && end instanceof PsiComment) {
PsiElement nextDeclaration = PsiTreeUtil.getNextSiblingOfType(end, JetDeclaration.class);
if (nextDeclaration != null) {
end = nextDeclaration;
}
}
else if (end != null && end.getFirstChild() != null) {
end = skipInsignificantElements(end.getLastChild(), false); end = skipInsignificantElements(end.getLastChild(), false);
} }
return start != null && end != null ? new LineRange(start, end, editor.getDocument()) : null; return start != null && end != null ? new LineRange(start, end, editor.getDocument()) : null;
} }
private static boolean isEmptyNamespaceHeader(PsiElement adjustedSibling) {
return adjustedSibling instanceof JetNamespaceHeader && adjustedSibling.getTextLength() == 0;
}
@Override @Override
public boolean checkAvailable(@NotNull Editor editor, @NotNull PsiFile file, @NotNull MoveInfo info, boolean down) { public boolean checkAvailable(@NotNull Editor editor, @NotNull PsiFile file, @NotNull MoveInfo info, boolean down) {
if (!super.checkAvailable(editor, file, info, down)) return false; if (!super.checkAvailable(editor, file, info, down)) return false;
@@ -249,4 +293,19 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
info.toMove2 = getTargetRange(editor, sibling, down, sourceRange.firstElement); info.toMove2 = getTargetRange(editor, sibling, down, sourceRange.firstElement);
return true; return true;
} }
@NotNull
private static PsiElement getTopmostSiblingCommentOrOriginal(@NotNull PsiElement originalElement, @NotNull Editor editor) {
PsiElement element = originalElement;
PsiElement sibling = element.getPrevSibling();
while (sibling instanceof PsiComment
|| (sibling instanceof PsiWhiteSpace && getElementLineCount(sibling, editor) <= 1)
|| (sibling != null && (sibling.getText() == null || sibling.getText().isEmpty()))) {
if (sibling instanceof PsiComment) {
element = sibling;
}
sibling = sibling.getPrevSibling();
}
return element;
}
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// val y
val y = "" val y = ""
} }
@@ -1,8 +1,11 @@
// MOVE: up // class B
<caret>class B { <caret>class B {
} }
// MOVE: up
// class A
class A { class A {
// val y
val y = "" val y = ""
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
<caret>class B { // class C
<caret>class C {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
} }
<caret>class B { // class C
<caret>class C {
} }
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
<caret>class B { // class C
<caret>class C {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
<caret>class B { // class C
<caret>class C {
} }
// class B
class B { class B {
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class A
class A { class A {
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// class B
<caret>class B { <caret>class B {
} }
// class A
class A { class A {
} }
} }
@@ -1,9 +1,12 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
class B { // class C
class C {
} }
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
class B { // class C
<caret>class B { class C {
// class B
class B {
} }
@@ -1,9 +1,12 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
} }
<caret>class B { // class C
<caret>class C {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
<caret>class B { // class C
<caret>class C {
} }
} }
@@ -1,5 +1,7 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
{ {
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
{ {
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,5 +1,7 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// val y
val y = "" val y = ""
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val y
val y = "" val y = ""
// class B
<caret>class B { <caret>class B {
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val x
val x = "" val x = ""
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// val x
val x = "" val x = ""
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// fun foo
fun foo() { fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
fun foo() { fun foo() {
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
fun foo() { fun foo() {
} }
// class B
<caret>class B { <caret>class B {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// fun foo
fun foo() { fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val y
val y = "" val y = ""
// class B
<caret>class B { <caret>class B {
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val y
val y = "" val y = ""
// class B
<caret>class B { <caret>class B {
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
<caret>class B { <caret>class B {
} }
// val y
val y = "" val y = ""
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
<caret>class A <caret>class A
// class D
class D { class D {
} }
// class C
class C { class C {
} }
@@ -1,8 +1,11 @@
// MOVE: down // class D
class D { class D {
// MOVE: down
// class A
<caret>class A <caret>class A
} }
// class C
class C { class C {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class D
class D { class D {
} }
// class A
<caret>class A <caret>class A
// class C
class C { class C {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class D
class D { class D {
// class A
<caret>class A <caret>class A
} }
// class C
class C { class C {
} }
@@ -1,5 +1,7 @@
// MOVE: down // MOVE: down
// class A
<caret>class A <caret>class A
// class D
class D { class D {
} }
@@ -1,5 +1,7 @@
// MOVE: down // class D
class D { class D {
// MOVE: down
// class A
<caret>class A <caret>class A
} }
@@ -1,5 +1,7 @@
// MOVE: up // MOVE: up
// class D
class D { class D {
} }
// class A
<caret>class A <caret>class A
@@ -1,5 +1,7 @@
// MOVE: up // MOVE: up
// class D
class D { class D {
// class A
<caret>class A <caret>class A
} }
@@ -1,7 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
enum class B { enum class B {
// X
<caret>X <caret>X
// Y
Y Y
} }
} }
@@ -1,7 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
enum class B { enum class B {
// Y
Y Y
// X
<caret>X <caret>X
} }
} }
@@ -1,8 +1,12 @@
// MOVE: up // MOVE: up
// IS_APPLICABLE: false // IS_APPLICABLE: false
// class A
class A { class A {
// class B
enum class B { enum class B {
// X
<caret>X <caret>X
// Y
Y Y
} }
} }
@@ -1,8 +1,12 @@
// MOVE: down // MOVE: down
// IS_APPLICABLE: false // IS_APPLICABLE: false
// class A
class A { class A {
// class B
enum class B { enum class B {
// X
X X
// Y
<caret>Y <caret>Y
} }
} }
@@ -1,7 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
enum class B { enum class B {
// X
X X
// Y
<caret>Y <caret>Y
} }
} }
@@ -1,7 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
enum class B { enum class B {
// Y
<caret>Y <caret>Y
// X
X X
} }
} }
@@ -1,10 +1,16 @@
// MOVE: up // MOVE: up
// class A
enum class A { enum class A {
// U
U U
// V
V V
// class B
enum class B { enum class B {
// X
<caret>X <caret>X
// Y
Y Y
} }
} }
@@ -1,10 +1,16 @@
// MOVE: up // MOVE: up
// class A
enum class A { enum class A {
// U
U U
// V
V V
<caret>X // X
X
// class B
enum class B { enum class B {
// Y
Y Y
} }
} }
@@ -1,10 +1,16 @@
// MOVE: down // MOVE: down
// class A
enum class A { enum class A {
// U
U U
// V
V V
// class B
enum class B { enum class B {
// X
X X
// Y
<caret>Y <caret>Y
} }
} }
@@ -1,10 +1,16 @@
// MOVE: down // MOVE: down
// class A
enum class A { enum class A {
// U
U U
// V
V V
// class B
enum class B { enum class B {
// X
X X
} }
// Y
<caret>Y <caret>Y
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// val y
val y = "" val y = ""
} }
@@ -1,8 +1,11 @@
// MOVE: up // fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// MOVE: up
// class A
class A { class A {
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// class B
class B { class B {
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// class B
class B { class B {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// class B
class B { class B {
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
<caret>fun foo() { // fun foo
fun foo() {
} }
} }
@@ -1,5 +1,7 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
{ {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
{ {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,5 +1,7 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// val y
val y = "" val y = ""
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val y
val y = "" val y = ""
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val x
val x = "" val x = ""
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// val x
val x = "" val x = ""
} }
@@ -1,9 +1,12 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
fun foo() { // fun bar
fun bar() {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
fun foo() { // fun bar
fun bar() {
} }
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,9 +1,12 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
fun foo() { fun foo() {
} }
<caret>fun foo() { // fun bar
<caret>fun bar() {
} }
} }
@@ -1,8 +1,11 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
<caret>fun foo() { // fun bar
<caret>fun bar() {
} }
// fun foo
fun foo() { fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val y
val y = "" val y = ""
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val y
val y = "" val y = ""
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// fun foo
<caret>fun foo() { <caret>fun foo() {
} }
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
// val y
<caret>val y = "" <caret>val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
val x = "" val x = ""
} }
// val y
<caret>val y = "" <caret>val y = ""
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val x
<caret>val x = "" <caret>val x = ""
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: up // val x
<caret>val x = "" <caret>val x = ""
// MOVE: up
// class A
class A { class A {
// val y
val y = "" val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
// val y
<caret>val y = "" <caret>val y = ""
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
} }
// val y
<caret>val y = "" <caret>val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
// val y
<caret>val y = "" <caret>val y = ""
} }
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// val y
<caret>val y = "" <caret>val y = ""
// class B
class B { class B {
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
// val y
<caret>val y = "" <caret>val y = ""
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
} }
// val y
<caret>val y = "" <caret>val y = ""
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// class B
class B { class B {
// val y
<caret>val y = "" <caret>val y = ""
} }
} }
@@ -1,6 +1,9 @@
// MOVE: up // MOVE: up
// fun foo
fun foo() { fun foo() {
// val y
<caret>val y = "" <caret>val y = ""
// class B
class B { class B {
} }
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// val x
<caret>val x = "" <caret>val x = ""
// class B
class B { class B {
} }
@@ -1,6 +1,9 @@
// MOVE: down // MOVE: down
// class A
class A { class A {
// class B
class B { class B {
// val x
<caret>val x = "" <caret>val x = ""
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
} }
// val x
<caret>val x = "" <caret>val x = ""
} }
@@ -1,7 +1,10 @@
// MOVE: up // MOVE: up
// class A
class A { class A {
// class B
class B { class B {
// val x
<caret>val x = "" <caret>val x = ""
} }
} }

Some files were not shown because too many files have changed in this diff Show More