quickfix to add 'infix' modifier
This commit is contained in:
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.idea.quickfix.AddModifierFix
|
|||||||
import org.jetbrains.kotlin.idea.quickfix.CleanupFix
|
import org.jetbrains.kotlin.idea.quickfix.CleanupFix
|
||||||
import org.jetbrains.kotlin.idea.quickfix.JetSingleIntentionActionFactory
|
import org.jetbrains.kotlin.idea.quickfix.JetSingleIntentionActionFactory
|
||||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||||
|
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||||
import org.jetbrains.kotlin.psi.JetModifierListOwner
|
import org.jetbrains.kotlin.psi.JetModifierListOwner
|
||||||
@@ -124,11 +125,11 @@ private class AddModifierLocalQuickFix() : LocalQuickFix {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object OperatorModifierFixFactory : JetSingleIntentionActionFactory() {
|
class ModifierFixFactory(val token: JetModifierKeywordToken) : JetSingleIntentionActionFactory() {
|
||||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||||
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? JetModifierListOwner ?: return null
|
as? JetModifierListOwner ?: return null
|
||||||
return object : AddModifierFix(target, JetTokens.OPERATOR_KEYWORD), CleanupFix {}
|
return object : AddModifierFix(target, token), CleanupFix {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticFactory
|
|||||||
import org.jetbrains.kotlin.diagnostics.Errors.*
|
import org.jetbrains.kotlin.diagnostics.Errors.*
|
||||||
import org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler
|
import org.jetbrains.kotlin.idea.core.overrideImplement.ImplementMembersHandler
|
||||||
import org.jetbrains.kotlin.idea.inspections.AddReflectionQuickFix
|
import org.jetbrains.kotlin.idea.inspections.AddReflectionQuickFix
|
||||||
import org.jetbrains.kotlin.idea.inspections.OperatorModifierFixFactory
|
import org.jetbrains.kotlin.idea.inspections.ModifierFixFactory
|
||||||
import org.jetbrains.kotlin.idea.intentions.IntroduceBackingPropertyFix
|
import org.jetbrains.kotlin.idea.intentions.IntroduceBackingPropertyFix
|
||||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable.*
|
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable.*
|
||||||
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.CreateClassFromCallWithConstructorCalleeActionFactory
|
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createClass.CreateClassFromCallWithConstructorCalleeActionFactory
|
||||||
@@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createVariable.CreateP
|
|||||||
import org.jetbrains.kotlin.idea.quickfix.migration.MigrateTypeParameterListFix
|
import org.jetbrains.kotlin.idea.quickfix.migration.MigrateTypeParameterListFix
|
||||||
import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageFix
|
import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageFix
|
||||||
import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageInWholeProjectFix
|
import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageInWholeProjectFix
|
||||||
|
import org.jetbrains.kotlin.lexer.JetTokens
|
||||||
import org.jetbrains.kotlin.lexer.JetTokens.*
|
import org.jetbrains.kotlin.lexer.JetTokens.*
|
||||||
import org.jetbrains.kotlin.psi.JetClass
|
import org.jetbrains.kotlin.psi.JetClass
|
||||||
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
|
||||||
@@ -331,7 +332,8 @@ public class QuickFixRegistrar : QuickFixContributor {
|
|||||||
BACKING_FIELD_USAGE_DEPRECATED.registerFactory(MigrateBackingFieldUsageFix)
|
BACKING_FIELD_USAGE_DEPRECATED.registerFactory(MigrateBackingFieldUsageFix)
|
||||||
BACKING_FIELD_USAGE_DEPRECATED.registerFactory(IntroduceBackingPropertyFix)
|
BACKING_FIELD_USAGE_DEPRECATED.registerFactory(IntroduceBackingPropertyFix)
|
||||||
|
|
||||||
OPERATOR_MODIFIER_REQUIRED.registerFactory(OperatorModifierFixFactory)
|
OPERATOR_MODIFIER_REQUIRED.registerFactory(ModifierFixFactory(JetTokens.OPERATOR_KEYWORD))
|
||||||
|
INFIX_MODIFIER_REQUIRED.registerFactory(ModifierFixFactory(JetTokens.INFIX_KEYWORD))
|
||||||
|
|
||||||
UNDERSCORE_IS_DEPRECATED.registerFactory(RenameUnderscoreFix)
|
UNDERSCORE_IS_DEPRECATED.registerFactory(RenameUnderscoreFix)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// "Add 'infix' modifier" "true"
|
||||||
|
class A {
|
||||||
|
fun xyzzy(i: Int) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
A() xyz<caret>zy 5
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// "Add 'infix' modifier" "true"
|
||||||
|
class A {
|
||||||
|
infix fun xyzzy(i: Int) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
A() xyz<caret>zy 5
|
||||||
|
}
|
||||||
@@ -4397,6 +4397,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("infixModifier.kt")
|
||||||
|
public void testInfixModifier() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/infixModifier.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("nestedClassNotAllowed.kt")
|
@TestMetadata("nestedClassNotAllowed.kt")
|
||||||
public void testNestedClassNotAllowed() throws Exception {
|
public void testNestedClassNotAllowed() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user