diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt index ef2ad0e2a25..dc1a3b41c27 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt @@ -32,13 +32,13 @@ public fun Project.executeWriteCommand(name: String, command: () -> Unit) { CommandProcessor.getInstance().executeCommand(this, { runWriteAction(command) }, name, null) } -public fun Project.executeCommand(name: String, command: () -> Unit) { - CommandProcessor.getInstance().executeCommand(this, command, name, null) +public fun Project.executeCommand(name: String, groupId: Any? = null, command: () -> Unit) { + CommandProcessor.getInstance().executeCommand(this, command, name, groupId) } -public fun Project.executeWriteCommand(name: String, command: () -> T): T { +public fun Project.executeWriteCommand(name: String, groupId: Any? = null, command: () -> T): T { var result: T = null as T - CommandProcessor.getInstance().executeCommand(this, { result = runWriteAction(command) }, name, null) + CommandProcessor.getInstance().executeCommand(this, { result = runWriteAction(command) }, name, groupId) [suppress("USELESS_CAST")] return result as T } diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt index e0d4d91c609..aea5b76fdba 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/handlers/GenerateLambda.kt @@ -31,6 +31,8 @@ import org.jetbrains.kotlin.idea.completion.ExpectedInfos import org.jetbrains.kotlin.idea.core.refactoring.EmptyValidator import org.jetbrains.kotlin.idea.core.refactoring.JetNameSuggester import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers +import org.jetbrains.kotlin.idea.util.application.executeCommand +import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.JetExpression import org.jetbrains.kotlin.psi.JetFile @@ -42,27 +44,25 @@ fun insertLambdaTemplate(context: InsertionContext, placeholderRange: TextRange, // we start template later to not interfere with insertion of tail type val commandProcessor = CommandProcessor.getInstance() - val commandName = commandProcessor.getCurrentCommandName() + val commandName = commandProcessor.getCurrentCommandName()!! val commandGroupId = commandProcessor.getCurrentCommandGroupId() val rangeMarker = context.getDocument().createRangeMarker(placeholderRange) context.setLaterRunnable { - commandProcessor.executeCommand(context.getProject(), { - runWriteAction { - try { - if (rangeMarker.isValid()) { - context.getDocument().deleteString(rangeMarker.getStartOffset(), rangeMarker.getEndOffset()) - context.getEditor().getCaretModel().moveToOffset(rangeMarker.getStartOffset()) - val template = buildTemplate(lambdaType, explicitParameterTypes, context.getProject()) - TemplateManager.getInstance(context.getProject()).startTemplate(context.getEditor(), template) - } - } - finally { - rangeMarker.dispose() + context.getProject().executeWriteCommand(commandName, groupId = commandGroupId) { + try { + if (rangeMarker.isValid()) { + context.getDocument().deleteString(rangeMarker.getStartOffset(), rangeMarker.getEndOffset()) + context.getEditor().getCaretModel().moveToOffset(rangeMarker.getStartOffset()) + val template = buildTemplate(lambdaType, explicitParameterTypes, context.getProject()) + TemplateManager.getInstance(context.getProject()).startTemplate(context.getEditor(), template) } } - }, commandName, commandGroupId) + finally { + rangeMarker.dispose() + } + } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt index bfe06d7bdc6..1abe69f0462 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/JavaToKotlinAction.kt @@ -88,7 +88,6 @@ public class JavaToKotlinAction : AnAction() { CommandProcessor.getInstance().markCurrentCommandAsGlobal(project) val newFiles = saveResults(javaFiles, converterResult!!.results.map { it!!.text /*conversion of a file always succeeds*/ }) - deleteFiles(javaFiles) externalCodeUpdate?.invoke() @@ -133,31 +132,16 @@ public class JavaToKotlinAction : AnAction() { private fun saveResults(javaFiles: List, convertedTexts: List): List { val result = ArrayList() for ((psiFile, text) in javaFiles.zip(convertedTexts)) { - result.addIfNotNull(saveConversionResult(psiFile.getVirtualFile(), text, psiFile.getProject())) - } - return result - } - - private fun saveConversionResult(javaFile: VirtualFile, text: String, project: Project): VirtualFile? { - try { - val kotlinFile = javaFile.copy(this, javaFile.getParent(), javaFile.getNameWithoutExtension() + ".kt") - kotlinFile.setBinaryContent(CharsetToolkit.getUtf8Bytes(text)) - return kotlinFile - } - catch (e: IOException) { - MessagesEx.error(project, e.getMessage()).showLater() - return null - } - } - - private fun deleteFiles(javaFiles: List) { - for (psiFile in javaFiles) { + val virtualFile = psiFile.getVirtualFile() try { - psiFile.getVirtualFile()?.delete(this) + virtualFile.rename(null, virtualFile.getNameWithoutExtension() + ".kt") + virtualFile.setBinaryContent(CharsetToolkit.getUtf8Bytes(text)) + result.add(virtualFile) } catch (e: IOException) { MessagesEx.error(psiFile.getProject(), e.getMessage()).showLater() } } + return result } } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt index 9ec9b7c058c..669e3f76c6c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/JetAddImportAction.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.imports.importableFqNameSafe import org.jetbrains.kotlin.idea.references.JetSimpleNameReference import org.jetbrains.kotlin.idea.JetDescriptorIconProvider import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde +import org.jetbrains.kotlin.idea.util.application.executeWriteCommand /** * Automatically adds import directive to the file for resolving reference. @@ -159,23 +160,19 @@ public class JetAddImportAction( protected fun addImport(element: PsiElement, project: Project, selectedVariant: Variant) { PsiDocumentManager.getInstance(project).commitAllDocuments() - CommandProcessor.getInstance().executeCommand(project, object : Runnable { - override fun run() { - ApplicationManager.getApplication().runWriteAction { - val file = element.getContainingFile() as JetFile - val descriptor = selectedVariant.descriptorToImport - // for class or package we use ShortenReferences because we not necessary insert an import but may want to insert partly qualified name - if (descriptor is ClassDescriptor || descriptor is PackageViewDescriptor) { - val fqName = descriptor.importableFqNameSafe - val reference = element.getReference() as JetSimpleNameReference - reference.bindToFqName(fqName, JetSimpleNameReference.ShorteningMode.FORCED_SHORTENING) - } - else { - ImportInsertHelper.getInstance(project).importDescriptor(file, descriptor) - } - } + project.executeWriteCommand(QuickFixBundle.message("add.import")) { + val file = element.getContainingFile() as JetFile + val descriptor = selectedVariant.descriptorToImport + // for class or package we use ShortenReferences because we not necessary insert an import but may want to insert partly qualified name + if (descriptor is ClassDescriptor || descriptor is PackageViewDescriptor) { + val fqName = descriptor.importableFqNameSafe + val reference = element.getReference() as JetSimpleNameReference + reference.bindToFqName(fqName, JetSimpleNameReference.ShorteningMode.FORCED_SHORTENING) } - }, QuickFixBundle.message("add.import"), null) + else { + ImportInsertHelper.getInstance(project).importDescriptor(file, descriptor) + } + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/CheckPartialBodyResolveAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/CheckPartialBodyResolveAction.kt index 8eb9f11cd65..05aa3e04432 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/CheckPartialBodyResolveAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/CheckPartialBodyResolveAction.kt @@ -37,6 +37,7 @@ import com.intellij.psi.PsiManager import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade +import org.jetbrains.kotlin.idea.util.application.runReadAction import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.siblings import org.jetbrains.kotlin.renderer.DescriptorRenderer @@ -53,10 +54,8 @@ public class CheckPartialBodyResolveAction : AnAction() { val project = CommonDataKeys.PROJECT.getData(e.getDataContext())!! ProgressManager.getInstance().runProcessWithProgressSynchronously( - Runnable { - ApplicationManager.getApplication().runReadAction { - checkResolve(selectedFiles, project) - } + { + runReadAction { checkResolve(selectedFiles, project) } }, "Checking Partial Body Resolve", true, diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt index da7e20278b8..6d614ac9cea 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt @@ -45,6 +45,7 @@ import org.jetbrains.kotlin.idea.references.JetMultiReference import org.jetbrains.kotlin.idea.references.JetReference import org.jetbrains.kotlin.idea.references.JetSimpleNameReference import org.jetbrains.kotlin.idea.util.ImportInsertHelper +import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.elementsInRange @@ -218,9 +219,9 @@ public class KotlinCopyPasteReferenceProcessor() : CopyPastePostProcessor): List { diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinShortenReferencesRefactoringHelper.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinShortenReferencesRefactoringHelper.kt index 13b5d9ddceb..7af809ff217 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinShortenReferencesRefactoringHelper.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinShortenReferencesRefactoringHelper.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.application.ApplicationManager import org.jetbrains.kotlin.idea.util.ShortenReferences import org.jetbrains.kotlin.idea.codeInsight.shorten.* +import org.jetbrains.kotlin.idea.util.application.runWriteAction public class KotlinShortenReferencesRefactoringHelper: RefactoringHelper { override fun prepareOperation(usages: Array?): Any? { @@ -33,8 +34,6 @@ public class KotlinShortenReferencesRefactoringHelper: RefactoringHelper { } override fun performOperation(project: Project, operationData: Any?) { - ApplicationManager.getApplication()!!.runWriteAction { - performDelayedShortening(project) - } + runWriteAction { performDelayedShortening(project) } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt index 37d19fd9c53..313e940842e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings import org.jetbrains.kotlin.idea.references.JetReference import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers import org.jetbrains.kotlin.idea.util.ImportInsertHelper +import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* @@ -156,7 +157,7 @@ public class KotlinImportOptimizer() : ImportOptimizer { // check if no changes to imports required if (oldImports.size() == sortedImportsToGenerate.size() && oldImports.map { it.getImportPath() } == sortedImportsToGenerate) return - ApplicationManager.getApplication()!!.runWriteAction(Runnable { + runWriteAction { val importList = file.getImportList()!! val psiFactory = JetPsiFactory(file.getProject()) for (importPath in sortedImportsToGenerate) { @@ -167,7 +168,7 @@ public class KotlinImportOptimizer() : ImportOptimizer { for (import in oldImports) { import.delete() } - }) + } } private fun detectDescriptorsToImport(): Set { diff --git a/idea/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt b/idea/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt index f330d4ef2ef..5c9ff252c15 100644 --- a/idea/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt +++ b/idea/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt @@ -38,6 +38,7 @@ import com.intellij.util.io.ZipUtil import com.intellij.ide.actions.ShowFilePathAction import com.intellij.util.WaitForProgressToShow import com.intellij.openapi.application.ApplicationManager +import org.jetbrains.kotlin.idea.util.application.runReadAction public class CreateIncrementalCompilationBackup: AnAction("Create backup for debugging Kotlin incremental compilation") { companion object { @@ -71,7 +72,7 @@ public class CreateIncrementalCompilationBackup: AnAction("Create backup for deb } private fun createPatches(backupDir: File, project: Project, indicator: ProgressIndicator) { - ApplicationManager.getApplication()!!.runReadAction(Runnable { + runReadAction { val localHistoryImpl = LocalHistoryImpl.getInstanceImpl()!! val gateway = localHistoryImpl.getGateway()!! val localHistoryFacade = localHistoryImpl.getFacade() @@ -105,7 +106,7 @@ public class CreateIncrementalCompilationBackup: AnAction("Create backup for deb } } } - }) + } } private fun copyLogs(backupDir: File, indicator: ProgressIndicator) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromUsageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromUsageFix.kt index f6abbe1e2ff..0d7f53a8f64 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromUsageFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateCallableFromUsageFix.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* import org.jetbrains.kotlin.idea.core.refactoring.canRefactor import org.jetbrains.kotlin.idea.core.refactoring.chooseContainerElementIfNecessary +import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.psi.* import java.util.Collections import java.util.HashSet @@ -111,7 +112,7 @@ public class CreateCallableFromUsageFix( fun runBuilder(placement: CallablePlacement) { callableBuilder.placement = placement - CommandProcessor.getInstance().executeCommand(project, { callableBuilder.build() }, getText(), null) + project.executeCommand(getText()) { callableBuilder.build() } } if (callableInfo is SecondaryConstructorInfo) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt index 2de7a6dd441..4d4fced3a48 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt @@ -40,6 +40,7 @@ import com.intellij.psi.PsiFile import org.jetbrains.kotlin.idea.core.refactoring.canRefactor import org.jetbrains.kotlin.idea.core.refactoring.getOrCreateKotlinFile import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* +import org.jetbrains.kotlin.idea.util.application.executeCommand enum class ClassKind(val keyword: String, val description: String) { PLAIN_CLASS: ClassKind("class", "class") @@ -124,7 +125,7 @@ public class CreateClassFromUsageFix( Collections.singletonList(constructorInfo), element as JetElement, file, editor, false, kind == PLAIN_CLASS || kind == TRAIT ).createBuilder() builder.placement = CallablePlacement.NoReceiver(targetParent) - CommandProcessor.getInstance().executeCommand(project, { builder.build() }, getText(), null) + project.executeCommand(getText()) { builder.build() } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt index 0d7f8db7714..5b82d749ecd 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createVariable/CreateLocalVariableActionFactory.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.idea.quickfix.JetSingleIntentionActionFactory import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil import org.jetbrains.kotlin.idea.quickfix.createFromUsage.CreateFromUsageFixBase import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* +import org.jetbrains.kotlin.idea.util.application.executeCommand import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getAssignmentByLHS import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement @@ -72,7 +73,7 @@ object CreateLocalVariableActionFactory: JetSingleIntentionActionFactory() { with (CallableBuilderConfiguration(propertyInfo.singletonOrEmptyList(), originalElement, file, editor).createBuilder()) { placement = CallablePlacement.NoReceiver(actualContainer) - CommandProcessor.getInstance().executeCommand(project, { build() }, getText(), null) + project.executeCommand(getText()) { build() } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignature.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignature.kt index 00317a077bc..f37b1c7bfd5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignature.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignature.kt @@ -36,6 +36,7 @@ import com.intellij.CommonBundle import com.intellij.refactoring.RefactoringBundle import org.jetbrains.kotlin.resolve.OverrideResolver import org.jetbrains.kotlin.idea.refactoring.CallableRefactoring +import org.jetbrains.kotlin.idea.util.application.runWriteAction public trait JetChangeSignatureConfiguration { fun configure(originalDescriptor: JetMethodDescriptor, bindingContext: BindingContext): JetMethodDescriptor @@ -109,9 +110,9 @@ public class JetChangeSignature(project: Project, } private fun performRefactoringSilently(dialog: JetChangeSignatureDialog) { - ApplicationManager.getApplication()!!.runWriteAction { + runWriteAction { dialog.createRefactoringProcessor().run() - Disposer.dispose(dialog.getDisposable()!!) + Disposer.dispose(dialog.getDisposable()) } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinImplicitLambdaParameter.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinImplicitLambdaParameter.kt index 1153a9c9ad8..a213a59e585 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinImplicitLambdaParameter.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinImplicitLambdaParameter.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.idea.intentions.ReplaceItWithExplicitFunctionLiteral import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.application.ApplicationManager import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler +import org.jetbrains.kotlin.idea.util.application.executeWriteCommand public class RenameKotlinImplicitLambdaParameter: VariableInplaceRenameHandler() { override fun isAvailable(element: PsiElement?, editor: Editor, file: PsiFile): Boolean { @@ -39,14 +40,9 @@ public class RenameKotlinImplicitLambdaParameter: VariableInplaceRenameHandler() override fun invoke(project: Project, editor: Editor, file: PsiFile, dataContext: DataContext?) { val intention = ReplaceItWithExplicitFunctionLiteralParamIntention() - CommandProcessor.getInstance().executeCommand( - project, - { ApplicationManager.getApplication()!!.runWriteAction(Runnable { - intention.invoke(project, editor, file) - }) }, - "Convert 'it' to explicit lambda parameter", - "" - ) + project.executeWriteCommand("Convert 'it' to explicit lambda parameter") { + intention.invoke(project, editor, file) + } } override fun invoke(project: Project, elements: Array, dataContext: DataContext?) { diff --git a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDirectInheritorsSearcher.kt b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDirectInheritorsSearcher.kt index 082bbdd6c58..31f60f9e5b2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDirectInheritorsSearcher.kt +++ b/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinDirectInheritorsSearcher.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.decompiler.navigation.JetSourceNavigationHelper import org.jetbrains.kotlin.idea.stubindex.JetSuperClassIndex import org.jetbrains.kotlin.idea.search.fileScope import org.jetbrains.kotlin.idea.stubindex.JetSourceFilterScope +import org.jetbrains.kotlin.idea.util.application.runReadAction public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase(true) { public override fun processQuery(queryParameters: DirectClassInheritorsSearch.SearchParameters, consumer: Processor) { @@ -43,7 +44,7 @@ public open class KotlinDirectInheritorsSearcher() : QueryExecutorBase JetSourceNavigationHelper.getOriginalPsiClassOrCreateLightClass(candidate)} diff --git a/idea/tests/org/jetbrains/kotlin/AbstractImportsTest.kt b/idea/tests/org/jetbrains/kotlin/AbstractImportsTest.kt index 1decc52f9e4..f1106bfaafb 100644 --- a/idea/tests/org/jetbrains/kotlin/AbstractImportsTest.kt +++ b/idea/tests/org/jetbrains/kotlin/AbstractImportsTest.kt @@ -22,6 +22,7 @@ import com.intellij.openapi.command.CommandProcessor import org.jetbrains.kotlin.idea.JetLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.JetWithJdkAndRuntimeLightProjectDescriptor import org.jetbrains.kotlin.idea.core.formatter.JetCodeStyleSettings +import org.jetbrains.kotlin.idea.util.application.executeWriteCommand import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.JetTestUtils @@ -55,11 +56,9 @@ public abstract class AbstractImportsTest : JetLightCodeInsightFixtureTestCase() codeInsightSettings.OPTIMIZE_IMPORTS_ON_THE_FLY = InTextDirectivesUtils.getPrefixedBoolean(file.getText(), "// OPTIMIZE_IMPORTS:") ?: false codeStyleSettings.NAME_COUNT_TO_USE_STAR_IMPORT = InTextDirectivesUtils.getPrefixedInt(file.getText(), "// NAME_COUNT_TO_USE_STAR_IMPORT:") ?: nameCountToUseStarImportDefault - CommandProcessor.getInstance().executeCommand(getProject(), { - ApplicationManager.getApplication()!!.runWriteAction { - doTest(file) - } - }, null, null) + getProject().executeWriteCommand("") { + doTest(file) + } fixture.checkResultByFile(testPath + ".after") } diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt index a4cfe6a52c8..d428462a218 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractEditorForEvaluateExpressionTest.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.* import com.intellij.psi.* import com.intellij.psi.util.PsiModificationTracker import com.intellij.psi.impl.PsiModificationTrackerImpl +import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.test.JetTestUtils import kotlin.test.fail @@ -55,7 +56,7 @@ public abstract class AbstractCodeFragmentHighlightingTest : AbstractJetPsiCheck fun doTestWithImport(filePath: String) { myFixture.configureByCodeFragment(filePath) - ApplicationManager.getApplication()?.runWriteAction { + runWriteAction { val fileText = FileUtil.loadFile(File(filePath), true) val file = myFixture.getFile() as JetFile InTextDirectivesUtils.findListWithPrefixes(fileText, "// IMPORT: ").forEach { diff --git a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractKotlinEvaluateExpressionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractKotlinEvaluateExpressionTest.kt index 34c5c1b6fcd..73d83f3fe41 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractKotlinEvaluateExpressionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/debugger/evaluate/AbstractKotlinEvaluateExpressionTest.kt @@ -63,6 +63,7 @@ import com.intellij.debugger.SourcePosition import com.intellij.debugger.engine.SourcePositionProvider import com.intellij.debugger.engine.evaluation.TextWithImports import com.intellij.debugger.ui.impl.watch.WatchItemDescriptor +import org.jetbrains.kotlin.idea.util.application.runReadAction import java.util.regex.Matcher import java.util.regex.Pattern @@ -322,7 +323,7 @@ public abstract class AbstractKotlinEvaluateExpressionTest : KotlinDebuggerTestB } private fun SuspendContextImpl.evaluate(text: String, codeFragmentKind: CodeFragmentKind, expectedResult: String) { - ApplicationManager.getApplication()?.runReadAction { + runReadAction { val sourcePosition = ContextUtil.getSourcePosition(this) val contextElement = ContextUtil.getContextElement(sourcePosition)!! Assert.assertTrue("KotlinCodeFragmentFactory should be accepted for context element otherwise default evaluator will be called. ContextElement = ${contextElement.getText()}", diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java index 13f84a55301..7cfc055d486 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/AbstractIntentionTest.java @@ -152,6 +152,7 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase { ApplicationPackage.executeWriteCommand( getProject(), intentionAction.getText(), + null, new Function0() { @Override public Object invoke() { diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/AbstractPartialBodyResolveTest.kt b/idea/tests/org/jetbrains/kotlin/idea/resolve/AbstractPartialBodyResolveTest.kt index 6d92866dc98..249c2b929cc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/AbstractPartialBodyResolveTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/AbstractPartialBodyResolveTest.kt @@ -43,6 +43,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode import org.jetbrains.kotlin.idea.JetFileType import com.intellij.openapi.util.io.FileUtil +import org.jetbrains.kotlin.idea.util.application.executeWriteCommand public abstract class AbstractPartialBodyResolveTest : JetLightCodeInsightFixtureTestCase() { override fun getTestDataPath() = JetTestUtils.getHomeDirectory() @@ -106,17 +107,12 @@ public abstract class AbstractPartialBodyResolveTest : JetLightCodeInsightFixtur .filter { !it.parents(withItself = false).any { it in set } } // do not include skipped statements which are inside other skipped statement .sortBy { it.getTextOffset() } - CommandProcessor.getInstance().executeCommand( - { - ApplicationManager.getApplication().runWriteAction { - for (statement in skippedStatements) { - statement.replace(JetPsiFactory(getProject()).createComment("/* STATEMENT DELETED: ${statement.compactPresentation()} */")) - } - } - }, - "", - null - ) + myFixture.getProject().executeWriteCommand("") { + for (statement in skippedStatements) { + statement.replace(JetPsiFactory(getProject()).createComment("/* STATEMENT DELETED: ${statement.compactPresentation()} */")) + } + } + val fileText = file.getText() if (selectionModel.hasSelection()) { val start = selectionModel.getSelectionStart() diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt index 9ad1c855caf..f1a673ff194 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterTest.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.idea.caches.resolve.analyzeFullyAndGetResult import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess +import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.test.JetTestUtils public abstract class AbstractJavaToKotlinConverterTest : LightCodeInsightFixtureTestCase() { @@ -54,19 +55,17 @@ public abstract class AbstractJavaToKotlinConverterTest : LightCodeInsightFixtur } protected fun addFile(text: String, fileName: String, dirName: String): VirtualFile { - return ApplicationManager.getApplication()!!.runWriteAction(object: Computable { - override fun compute(): VirtualFile? { - val root = LightPlatformTestCase.getSourceRoot()!! - val virtualDir = root.findChild(dirName) ?: root.createChildDirectory(null, dirName) - val virtualFile = virtualDir.createChildData(null, fileName) - virtualFile.getOutputStream(null)!!.writer().use { it.write(text) } - return virtualFile - } - }) + return runWriteAction { + val root = LightPlatformTestCase.getSourceRoot()!! + val virtualDir = root.findChild(dirName) ?: root.createChildDirectory(null, dirName) + val virtualFile = virtualDir.createChildData(null, fileName) + virtualFile.getOutputStream(null)!!.writer().use { it.write(text) } + virtualFile + } } protected fun deleteFile(virtualFile: VirtualFile) { - ApplicationManager.getApplication()!!.runWriteAction { virtualFile.delete(this) } + runWriteAction { virtualFile.delete(this) } } protected fun addErrorsDump(jetFile: JetFile): String {