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