From eee9431a6d6320c4f71a98861b81ce7ff1715c4e Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 23 May 2016 19:44:19 +0300 Subject: [PATCH] More write action requirement remove Workaround for exception: Refactorings should not be started inside write action because they start progress inside and any read action from the progress task would cause the deadlock --- .../kotlin/idea/quickfix/DeprecatedFunctionConventionFix.kt | 2 ++ .../kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt | 4 ++++ .../quickfix/RenameParameterToMatchOverriddenMethodFix.kt | 2 ++ .../org/jetbrains/kotlin/idea/quickfix/RenameUnderscoreFix.kt | 2 ++ 4 files changed, 10 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedFunctionConventionFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedFunctionConventionFix.kt index f894b231469..8aaf3e249df 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedFunctionConventionFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/DeprecatedFunctionConventionFix.kt @@ -42,6 +42,8 @@ class DeprecatedFunctionConventionFix( FilteredRenameProcessor(project, element, newName, false, false).run() } + override fun startInWriteAction(): Boolean = false + companion object : KotlinSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic): IntentionAction? { val (functionDescriptor, newName) = when (diagnostic) { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt index db9d319fa4f..f0553f985b0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/InitializePropertyQuickFixFactory.kt @@ -70,6 +70,8 @@ object InitializePropertyQuickFixFactory : KotlinIntentionActionsFactory() { override fun getText() = "Move to constructor parameters" override fun getFamilyName() = text + override fun startInWriteAction(): Boolean = false + private fun configureChangeSignature(propertyDescriptor: PropertyDescriptor): KotlinChangeSignatureConfiguration { return object : KotlinChangeSignatureConfiguration { override fun configure(originalDescriptor: KotlinMethodDescriptor): KotlinMethodDescriptor { @@ -124,6 +126,8 @@ object InitializePropertyQuickFixFactory : KotlinIntentionActionsFactory() { override fun getText() = "Initialize with constructor parameter" override fun getFamilyName() = text + override fun startInWriteAction(): Boolean = false + private fun configureChangeSignature(propertyDescriptor: PropertyDescriptor): KotlinChangeSignatureConfiguration { return object : KotlinChangeSignatureConfiguration { override fun configure(originalDescriptor: KotlinMethodDescriptor): KotlinMethodDescriptor { diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameParameterToMatchOverriddenMethodFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameParameterToMatchOverriddenMethodFix.kt index 5fe7111658b..d39af4809dc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameParameterToMatchOverriddenMethodFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameParameterToMatchOverriddenMethodFix.kt @@ -35,6 +35,8 @@ class RenameParameterToMatchOverriddenMethodFix( override fun getText() = "Rename parameter to match overridden method" + override fun startInWriteAction(): Boolean = false + public override fun invoke(project: Project, editor: Editor?, file: KtFile) { RenameProcessor(project, parameter, newName, false, false).run() } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameUnderscoreFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameUnderscoreFix.kt index ca9e603d043..5018ce3b8ec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameUnderscoreFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/RenameUnderscoreFix.kt @@ -29,6 +29,8 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType class RenameUnderscoreFix(declaration: KtDeclaration) : KotlinQuickFixAction(declaration) { + override fun startInWriteAction(): Boolean = false + override fun invoke(project: Project, editor: Editor?, file: KtFile) { if (editor == null) return val dataContext = DataManager.getInstance().getDataContext(editor.component)