Replace calls to QuickFixUtil.canModify by calls to canRefactor
Fix ChangeFunctionSignatureFix#isAvailable
This commit is contained in:
@@ -87,10 +87,6 @@ public class QuickFixUtil {
|
||||
return matchingReturnType;
|
||||
}
|
||||
|
||||
public static boolean canModifyElement(@NotNull PsiElement element) {
|
||||
return element.isWritable();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static PsiElement safeGetDeclaration(@Nullable CallableDescriptor descriptor) {
|
||||
//do not create fix if descriptor has more than one overridden declaration
|
||||
|
||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters2
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.idea.intentions.InfixCallToOrdinaryIntention
|
||||
import org.jetbrains.kotlin.idea.quickfix.CleanupFix
|
||||
import org.jetbrains.kotlin.idea.quickfix.KotlinQuickFixAction
|
||||
@@ -46,7 +46,7 @@ class InfixCallFix(expression: KtBinaryExpression) : KotlinQuickFixAction<KtBina
|
||||
val functionDescriptor = (diagnostic as? DiagnosticWithParameters2<*, *, *>)?.a as? FunctionDescriptor ?: return null
|
||||
val target = DescriptorToSourceUtilsIde.getAnyDeclaration(diagnostic.psiFile.project, functionDescriptor)
|
||||
as? KtModifierListOwner
|
||||
if (target == null || QuickFixUtil.canModifyElement(target)) {
|
||||
if (target == null || target.canRefactor()) {
|
||||
// we'll fix the problem by adding the 'infix' modifier to the target
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.ABSTRACT_KEYWORD
|
||||
@@ -52,7 +53,7 @@ open class AddModifierFix(
|
||||
}
|
||||
|
||||
override fun isAvailable(project: Project, editor: Editor?, file: PsiFile): Boolean {
|
||||
return super.isAvailable(project, editor, file) && QuickFixUtil.canModifyElement(element)
|
||||
return super.isAvailable(project, editor, file) && element.canRefactor()
|
||||
}
|
||||
|
||||
companion object {
|
||||
@@ -97,7 +98,7 @@ open class AddModifierFix(
|
||||
val type = bindingContext[BindingContext.TYPE, typeReference] ?: return null
|
||||
val classDescriptor = type.constructor.declarationDescriptor as? ClassDescriptor ?: return null
|
||||
val declaration = DescriptorToSourceUtils.descriptorToDeclaration(classDescriptor) as? KtClass ?: return null
|
||||
if (!QuickFixUtil.canModifyElement(declaration)) return null
|
||||
if (!declaration.canRefactor()) return null
|
||||
if (declaration.isEnum()) return null
|
||||
return AddModifierFix(declaration, KtTokens.OPEN_KEYWORD)
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
|
||||
import org.jetbrains.kotlin.idea.core.mapArgumentsToParameters
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
@@ -57,7 +57,7 @@ abstract class ChangeFunctionSignatureFix(
|
||||
if (!super.isAvailable(project, editor, file)) return false
|
||||
|
||||
val declarations = DescriptorToSourceUtilsIde.getAllDeclarations(project, functionDescriptor)
|
||||
return declarations.all { it.isValid && QuickFixUtil.canModifyElement(it) }
|
||||
return declarations.isNotEmpty() && declarations.all { it.isValid && it.canRefactor() }
|
||||
}
|
||||
|
||||
protected fun getNewArgumentName(argument: ValueArgument, validator: Function1<String, Boolean>): String {
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic;
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle;
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil;
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.JetRefactoringUtilKt;
|
||||
import org.jetbrains.kotlin.idea.references.ReferenceUtilKt;
|
||||
import org.jetbrains.kotlin.lexer.KtTokens;
|
||||
import org.jetbrains.kotlin.psi.*;
|
||||
@@ -62,7 +63,7 @@ public class MakeClassAnAnnotationClassFix extends KotlinQuickFixAction<KtAnnota
|
||||
PsiElement target = reference.resolve();
|
||||
if (target instanceof KtClass) {
|
||||
annotationClass = (KtClass) target;
|
||||
return QuickFixUtil.canModifyElement(annotationClass);
|
||||
return JetRefactoringUtilKt.canRefactor(annotationClass);
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -21,14 +21,11 @@ import com.intellij.openapi.editor.Editor
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiFile
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DECLARATION
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.DELEGATION
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.FAKE_OVERRIDE
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind.*
|
||||
import org.jetbrains.kotlin.descriptors.isOverridable
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptor
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.lexer.KtTokens.OPEN_KEYWORD
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
@@ -57,7 +54,7 @@ public class MakeOverriddenMemberOpenFix(declaration: KtDeclaration) : KotlinQui
|
||||
descriptor)) {
|
||||
assert(overriddenDescriptor.kind == DECLARATION) { "Can only be applied to declarations." }
|
||||
val overriddenMember = DescriptorToSourceUtils.descriptorToDeclaration(overriddenDescriptor)
|
||||
if (overriddenMember == null || !QuickFixUtil.canModifyElement(overriddenMember) || overriddenMember !is KtCallableDeclaration) {
|
||||
if (overriddenMember == null || !overriddenMember.canRefactor() || overriddenMember !is KtCallableDeclaration) {
|
||||
return false
|
||||
}
|
||||
val containingDeclarationName = overriddenDescriptor.containingDeclaration.name.asString()
|
||||
|
||||
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
|
||||
import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil
|
||||
import org.jetbrains.kotlin.idea.core.refactoring.canRefactor
|
||||
import org.jetbrains.kotlin.idea.util.getResolutionScope
|
||||
import org.jetbrains.kotlin.psi.KtBlockExpression
|
||||
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
|
||||
@@ -88,7 +88,7 @@ public abstract class CallableRefactoring<T: CallableDescriptor>(
|
||||
}
|
||||
|
||||
protected fun checkModifiable(element: PsiElement): Boolean {
|
||||
if (QuickFixUtil.canModifyElement(element)) {
|
||||
if (element.canRefactor()) {
|
||||
return true
|
||||
}
|
||||
|
||||
|
||||
Vendored
-1
@@ -1,6 +1,5 @@
|
||||
// "Create secondary constructor" "false"
|
||||
// ERROR: Too many arguments for public constructor G() defined in G
|
||||
// ACTION: Add parameter to constructor 'G'
|
||||
// ACTION: Convert to block body
|
||||
// ACTION: Create function 'G'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user