quickfix to add 'infix' modifier

This commit is contained in:
Dmitry Jemerov
2015-10-08 21:05:40 +02:00
parent dcab3e406e
commit 6ca3a9fe9f
5 changed files with 29 additions and 4 deletions
@@ -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)
+8
View File
@@ -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");