Move: Fix "whole file" mode detection for scripts

#KT-25857 Fixed
This commit is contained in:
Alexey Sedunov
2018-08-02 21:22:53 +03:00
parent 40a5bf0355
commit 1797a50fc9
2 changed files with 7 additions and 6 deletions
@@ -624,4 +624,6 @@ fun KtModifierKeywordToken.toVisibility(): Visibility {
KtTokens.INTERNAL_KEYWORD -> Visibilities.INTERNAL KtTokens.INTERNAL_KEYWORD -> Visibilities.INTERNAL
else -> throw IllegalArgumentException("Unknown visibility modifier:$this") else -> throw IllegalArgumentException("Unknown visibility modifier:$this")
} }
} }
fun KtFile.getFileOrScriptDeclarations() = if (isScript()) script!!.declarations else declarations
@@ -66,9 +66,9 @@ import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.*;
import org.jetbrains.kotlin.idea.refactoring.ui.KotlinFileChooserDialog; import org.jetbrains.kotlin.idea.refactoring.ui.KotlinFileChooserDialog;
import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt; import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt;
import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.psi.KtDeclarationContainer;
import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.psi.KtNamedDeclaration; import org.jetbrains.kotlin.psi.KtNamedDeclaration;
import org.jetbrains.kotlin.psi.psiUtil.KtPsiUtilKt;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
@@ -171,9 +171,8 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog {
sourceFiles, sourceFiles,
new Function1<KtFile, Iterable<?>>() { new Function1<KtFile, Iterable<?>>() {
@Override @Override
public Iterable<?> invoke(KtFile jetFile) { public Iterable<?> invoke(KtFile ktFile) {
KtDeclarationContainer container = jetFile.isScript() ? jetFile.getScript() : jetFile; return KtPsiUtilKt.getFileOrScriptDeclarations(ktFile);
return container != null ? container.getDeclarations() : emptyList();
} }
} }
), ),
@@ -450,7 +449,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog {
} }
); );
for (Map.Entry<KtFile, List<KtNamedDeclaration>> entry : fileToElements.entrySet()) { for (Map.Entry<KtFile, List<KtNamedDeclaration>> entry : fileToElements.entrySet()) {
if (entry.getKey().getDeclarations().size() != entry.getValue().size()) return false; if (KtPsiUtilKt.getFileOrScriptDeclarations(entry.getKey()).size() != entry.getValue().size()) return false;
} }
return true; return true;
} }