Search in sources :

Example 1 with KtFile

use of org.jetbrains.kotlin.psi.KtFile in project kotlin by JetBrains.

the class KotlinBytecodeToolWindow method compileSingleFile.

@NotNull
public static GenerationState compileSingleFile(@NotNull final KtFile ktFile, @NotNull CompilerConfiguration configuration) {
    ResolutionFacade resolutionFacade = ResolutionUtils.getResolutionFacade(ktFile);
    BindingContext bindingContextForFile = resolutionFacade.analyzeFullyAndGetResult(Collections.singletonList(ktFile)).getBindingContext();
    kotlin.Pair<BindingContext, List<KtFile>> result = DebuggerUtils.INSTANCE.analyzeInlinedFunctions(resolutionFacade, ktFile, configuration.getBoolean(CommonConfigurationKeys.DISABLE_INLINE), bindingContextForFile);
    BindingContext bindingContext = result.getFirst();
    List<KtFile> toProcess = result.getSecond();
    GenerationState.GenerateClassFilter generateClassFilter = new GenerationState.GenerateClassFilter() {

        @Override
        public boolean shouldGeneratePackagePart(@NotNull KtFile file) {
            return file == ktFile;
        }

        @Override
        public boolean shouldAnnotateClass(@NotNull KtClassOrObject processingClassOrObject) {
            return true;
        }

        @Override
        public boolean shouldGenerateClass(@NotNull KtClassOrObject processingClassOrObject) {
            return processingClassOrObject.getContainingKtFile() == ktFile;
        }

        @Override
        public boolean shouldGenerateScript(@NotNull KtScript script) {
            return script.getContainingKtFile() == ktFile;
        }
    };
    GenerationState state = new GenerationState(ktFile.getProject(), ClassBuilderFactories.TEST, resolutionFacade.getModuleDescriptor(), bindingContext, toProcess, configuration, generateClassFilter);
    KotlinCodegenFacade.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION);
    return state;
}
Also used : KtClassOrObject(org.jetbrains.kotlin.psi.KtClassOrObject) KtScript(org.jetbrains.kotlin.psi.KtScript) BindingContext(org.jetbrains.kotlin.resolve.BindingContext) NotNull(org.jetbrains.annotations.NotNull) GenerationState(org.jetbrains.kotlin.codegen.state.GenerationState) ResolutionFacade(org.jetbrains.kotlin.idea.resolve.ResolutionFacade) List(java.util.List) KtFile(org.jetbrains.kotlin.psi.KtFile) NotNull(org.jetbrains.annotations.NotNull)

Example 2 with KtFile

use of org.jetbrains.kotlin.psi.KtFile in project kotlin by JetBrains.

the class PluginJetFilesProvider method allFilesInProject.

@NotNull
public static Collection<KtFile> allFilesInProject(@NotNull Project project) {
    Collection<KtFile> result = new ArrayList<KtFile>();
    GlobalSearchScope scope = KotlinSourceFilterScope.sources(GlobalSearchScope.allScope(project), project);
    for (String packageWithFiles : KotlinExactPackagesIndex.getInstance().getAllKeys(project)) {
        result.addAll(KotlinExactPackagesIndex.getInstance().get(packageWithFiles, project, scope));
    }
    return result;
}
Also used : GlobalSearchScope(com.intellij.psi.search.GlobalSearchScope) ArrayList(java.util.ArrayList) KtFile(org.jetbrains.kotlin.psi.KtFile) NotNull(org.jetbrains.annotations.NotNull)

Example 3 with KtFile

use of org.jetbrains.kotlin.psi.KtFile in project kotlin by JetBrains.

the class AbstractPsiCheckerTest method checkResolveToDescriptor.

void checkResolveToDescriptor() {
    KtFile file = (KtFile) myFixture.getFile();
    file.accept(new KtTreeVisitorVoid() {

        @Override
        public void visitDeclaration(@NotNull KtDeclaration dcl) {
            if (areDescriptorsCreatedForDeclaration(dcl)) {
                // check for exceptions
                ResolutionUtils.resolveToDescriptor(dcl, BodyResolveMode.FULL);
            }
            dcl.acceptChildren(this, null);
        }
    });
}
Also used : KtDeclaration(org.jetbrains.kotlin.psi.KtDeclaration) KtTreeVisitorVoid(org.jetbrains.kotlin.psi.KtTreeVisitorVoid) KtFile(org.jetbrains.kotlin.psi.KtFile)

Example 4 with KtFile

use of org.jetbrains.kotlin.psi.KtFile in project kotlin by JetBrains.

the class MoveKotlinTopLevelDeclarationsDialog method initFileChooser.

private void initFileChooser(@Nullable KtFile targetFile, @NotNull Set<KtNamedDeclaration> elementsToMove, @NotNull List<KtFile> sourceFiles) {
    final PsiDirectory sourceDir = sourceFiles.get(0).getParent();
    assert sourceDir != null : sourceFiles.get(0).getVirtualFile().getPath();
    fileChooser.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            KotlinFileChooserDialog dialog = new KotlinFileChooserDialog("Choose Containing File", myProject);
            File targetFile = new File(getTargetFilePath());
            PsiFile targetPsiFile = KotlinRefactoringUtilKt.toPsiFile(targetFile, myProject);
            if (targetPsiFile instanceof KtFile) {
                dialog.select((KtFile) targetPsiFile);
            } else {
                PsiDirectory targetDir = KotlinRefactoringUtilKt.toPsiDirectory(targetFile.getParentFile(), myProject);
                if (targetDir == null) {
                    targetDir = sourceDir;
                }
                dialog.selectDirectory(targetDir);
            }
            dialog.showDialog();
            KtFile selectedFile = dialog.isOK() ? dialog.getSelected() : null;
            if (selectedFile != null) {
                fileChooser.setText(selectedFile.getVirtualFile().getPath());
            }
        }
    });
    String initialTargetPath = targetFile != null ? targetFile.getVirtualFile().getPath() : sourceFiles.get(0).getVirtualFile().getParent().getPath() + "/" + MoveUtilsKt.guessNewFileName(elementsToMove);
    fileChooser.setText(initialTargetPath);
}
Also used : KotlinFileChooserDialog(org.jetbrains.kotlin.idea.refactoring.ui.KotlinFileChooserDialog) ActionListener(java.awt.event.ActionListener) ActionEvent(java.awt.event.ActionEvent) KtFile(org.jetbrains.kotlin.psi.KtFile) VirtualFile(com.intellij.openapi.vfs.VirtualFile) KtFile(org.jetbrains.kotlin.psi.KtFile) File(java.io.File)

Example 5 with KtFile

use of org.jetbrains.kotlin.psi.KtFile in project kotlin by JetBrains.

the class MoveKotlinTopLevelDeclarationsDialog method doAction.

@Override
protected void doAction() {
    KotlinMoveTarget target = selectMoveTarget();
    if (target == null)
        return;
    saveRefactoringSettings();
    List<KtNamedDeclaration> elementsToMove = getSelectedElementsToMove();
    List<KtFile> sourceFiles = getSourceFiles(elementsToMove);
    final PsiDirectory sourceDirectory = getSourceDirectory(sourceFiles);
    for (PsiElement element : elementsToMove) {
        String message = target.verify(element.getContainingFile());
        if (message != null) {
            CommonRefactoringUtil.showErrorMessage(RefactoringBundle.message("error.title"), message, null, myProject);
            return;
        }
    }
    try {
        boolean deleteSourceFile = false;
        if (isFullFileMove()) {
            if (isMoveToPackage()) {
                Pair<VirtualFile, ? extends MoveDestination> sourceRootWithMoveDestination = selectPackageBasedTargetDirAndDestination(false);
                //noinspection ConstantConditions
                final MoveDestination moveDestination = sourceRootWithMoveDestination.getSecond();
                PsiDirectory targetDir = moveDestination.getTargetIfExists(sourceDirectory);
                String targetFileName = sourceFiles.size() > 1 ? null : tfFileNameInPackage.getText();
                List<PsiFile> filesExistingInTargetDir = getFilesExistingInTargetDir(sourceFiles, targetFileName, targetDir);
                if (filesExistingInTargetDir.isEmpty()) {
                    PsiDirectory targetDirectory = ApplicationUtilsKt.runWriteAction(new Function0<PsiDirectory>() {

                        @Override
                        public PsiDirectory invoke() {
                            return moveDestination.getTargetDirectory(sourceDirectory);
                        }
                    });
                    for (KtFile sourceFile : sourceFiles) {
                        MoveUtilsKt.setUpdatePackageDirective(sourceFile, cbUpdatePackageDirective.isSelected());
                    }
                    invokeRefactoring(new MoveFilesWithDeclarationsProcessor(myProject, sourceFiles, targetDirectory, targetFileName, isSearchInComments(), isSearchInNonJavaFiles(), moveCallback));
                    return;
                }
            }
            int ret = Messages.showYesNoCancelDialog(myProject, "You are about to move all declarations out of the source file(s). Do you want to delete empty files?", RefactoringBundle.message("move.title"), Messages.getQuestionIcon());
            if (ret == Messages.CANCEL)
                return;
            deleteSourceFile = ret == Messages.YES;
        }
        MoveDeclarationsDescriptor options = new MoveDeclarationsDescriptor(elementsToMove, target, MoveDeclarationsDelegate.TopLevel.INSTANCE, isSearchInComments(), isSearchInNonJavaFiles(), true, deleteSourceFile, moveCallback, false);
        invokeRefactoring(new MoveKotlinDeclarationsProcessor(myProject, options, Mover.Default.INSTANCE));
    } catch (IncorrectOperationException e) {
        CommonRefactoringUtil.showErrorMessage(RefactoringBundle.message("error.title"), e.getMessage(), null, myProject);
    }
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) MoveDestination(com.intellij.refactoring.MoveDestination) AutocreatingSingleSourceRootMoveDestination(com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination) MultipleRootsMoveDestination(com.intellij.refactoring.move.moveClassesOrPackages.MultipleRootsMoveDestination) KtNamedDeclaration(org.jetbrains.kotlin.psi.KtNamedDeclaration) KtFile(org.jetbrains.kotlin.psi.KtFile) IncorrectOperationException(com.intellij.util.IncorrectOperationException)

Aggregations

KtFile (org.jetbrains.kotlin.psi.KtFile)60 File (java.io.File)21 NotNull (org.jetbrains.annotations.NotNull)19 PsiFile (com.intellij.psi.PsiFile)13 VirtualFile (com.intellij.openapi.vfs.VirtualFile)10 FqName (org.jetbrains.kotlin.name.FqName)8 ArrayList (java.util.ArrayList)6 AnalysisResult (org.jetbrains.kotlin.analyzer.AnalysisResult)6 KotlinCoreEnvironment (org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment)6 KtDeclaration (org.jetbrains.kotlin.psi.KtDeclaration)6 Project (com.intellij.openapi.project.Project)4 OutputFile (org.jetbrains.kotlin.backend.common.output.OutputFile)4 Pair (com.intellij.openapi.util.Pair)3 GlobalSearchScope (com.intellij.psi.search.GlobalSearchScope)3 LightVirtualFile (com.intellij.testFramework.LightVirtualFile)3 ModuleDescriptor (org.jetbrains.kotlin.descriptors.ModuleDescriptor)3 BindingContext (org.jetbrains.kotlin.resolve.BindingContext)3 VirtualFileSystem (com.intellij.openapi.vfs.VirtualFileSystem)2 MoveDestination (com.intellij.refactoring.MoveDestination)2 AutocreatingSingleSourceRootMoveDestination (com.intellij.refactoring.move.moveClassesOrPackages.AutocreatingSingleSourceRootMoveDestination)2