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.JetSingleIntentionActionFactory
|
||||
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
|
||||
import org.jetbrains.kotlin.lexer.JetModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||
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? {
|
||||
val functionDescriptor = (diagnostic as? DiagnosticWithParameters2<*, *, *>)?.a as? FunctionDescriptor ?: return null
|
||||
val target = DescriptorToSourceUtilsIde.getAnyDeclaration(diagnostic.psiFile.project, functionDescriptor)
|
||||
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.idea.core.overrideImplement.ImplementMembersHandler
|
||||
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.quickfix.createFromUsage.createCallable.*
|
||||
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.replaceWith.DeprecatedSymbolUsageFix
|
||||
import org.jetbrains.kotlin.idea.quickfix.replaceWith.DeprecatedSymbolUsageInWholeProjectFix
|
||||
import org.jetbrains.kotlin.lexer.JetTokens
|
||||
import org.jetbrains.kotlin.lexer.JetTokens.*
|
||||
import org.jetbrains.kotlin.psi.JetClass
|
||||
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(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)
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@TestMetadata("infixModifier.kt")
|
||||
public void testInfixModifier() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/infixModifier.kt");
|
||||
doTest(fileName);
|
||||
}
|
||||
|
||||
@TestMetadata("nestedClassNotAllowed.kt")
|
||||
public void testNestedClassNotAllowed() throws Exception {
|
||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/modifiers/nestedClassNotAllowed.kt");
|
||||
|
||||
Reference in New Issue
Block a user