diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.kt index 2728eef23bd..59db81e5096 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/quickfix/JetIntentionActionsFactory.kt @@ -18,7 +18,18 @@ package org.jetbrains.jet.plugin.quickfix import com.intellij.codeInsight.intention.IntentionAction import org.jetbrains.jet.lang.diagnostics.Diagnostic +import org.jetbrains.jet.lang.psi.JetCodeFragment +import java.util.Collections -public trait JetIntentionActionsFactory { - public fun createActions(diagnostic: Diagnostic): List +// TODO: Replace with trait when all subclasses are translated to Kotlin +public abstract class JetIntentionActionsFactory { + protected open fun isApplicableForCodeFragment(): Boolean = false + protected abstract fun doCreateActions(diagnostic: Diagnostic): List + + public fun createActions(diagnostic: Diagnostic): List { + if (diagnostic.getPsiElement().getContainingFile() is JetCodeFragment && !isApplicableForCodeFragment()) { + return Collections.emptyList() + } + return doCreateActions(diagnostic) + } } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java index 19d8f7709ee..0a916f57695 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java @@ -191,7 +191,7 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction return new JetIntentionActionsFactory() { @NotNull @Override - public List createActions(@NotNull Diagnostic diagnostic) { + protected List doCreateActions(@NotNull Diagnostic diagnostic) { List actions = new LinkedList(); JetFunction function = QuickFixUtil.getParentElementOfType(diagnostic, JetFunction.class); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeVariableTypeFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeVariableTypeFix.java index b399acaef85..739401fef96 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeVariableTypeFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeVariableTypeFix.java @@ -128,7 +128,7 @@ public class ChangeVariableTypeFix extends JetIntentionAction createActions(@NotNull Diagnostic diagnostic) { + protected List doCreateActions(@NotNull Diagnostic diagnostic) { List actions = new LinkedList(); JetProperty property = QuickFixUtil.getParentElementOfType(diagnostic, JetProperty.class); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/JetSingleIntentionActionFactory.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/JetSingleIntentionActionFactory.kt index 230903f9321..35875942eb5 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/JetSingleIntentionActionFactory.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/JetSingleIntentionActionFactory.kt @@ -18,20 +18,11 @@ package org.jetbrains.jet.plugin.quickfix import com.intellij.codeInsight.intention.IntentionAction import org.jetbrains.jet.lang.diagnostics.Diagnostic -import org.jetbrains.jet.lang.psi.JetCodeFragment -import java.util.Collections import org.jetbrains.jet.utils.addToStdlib.singletonOrEmptyList -public abstract class JetSingleIntentionActionFactory : JetIntentionActionsFactory { - public abstract fun createAction(diagnostic: Diagnostic): IntentionAction? +public abstract class JetSingleIntentionActionFactory : JetIntentionActionsFactory() { + protected abstract fun createAction(diagnostic: Diagnostic): IntentionAction? - override fun createActions(diagnostic: Diagnostic): List { - if (diagnostic.getPsiElement().getContainingFile() is JetCodeFragment && !isApplicableForCodeFragment()) { - return Collections.emptyList() - } - return createAction(diagnostic).singletonOrEmptyList() - } - - public fun isApplicableForCodeFragment(): Boolean = false + final override fun doCreateActions(diagnostic: Diagnostic): List = createAction(diagnostic).singletonOrEmptyList() } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java index aeae6040de8..d19d40ec481 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java @@ -36,10 +36,10 @@ import java.util.LinkedList; import java.util.List; //TODO: should use change signature to deal with cases of multiple overridden descriptors -public class QuickFixFactoryForTypeMismatchError implements JetIntentionActionsFactory { +public class QuickFixFactoryForTypeMismatchError extends JetIntentionActionsFactory { @NotNull @Override - public List createActions(@NotNull Diagnostic diagnostic) { + protected List doCreateActions(@NotNull Diagnostic diagnostic) { List actions = new LinkedList(); DiagnosticWithParameters2 diagnosticWithParameters = Errors.TYPE_MISMATCH.cast(diagnostic);