Add quick-fix for default parameter value removal #KT-25146 Fixed

This commit is contained in:
Toshiaki Kameyama
2018-07-24 09:03:21 +03:00
committed by Mikhail Glukhikh
parent a059d50c8f
commit 1b1e503716
10 changed files with 132 additions and 0 deletions
@@ -567,5 +567,8 @@ class QuickFixRegistrar : QuickFixContributor {
CONST_VAL_NOT_TOP_LEVEL_OR_OBJECT.registerFactory(MoveMemberToCompanionObjectIntention)
NO_COMPANION_OBJECT.registerFactory(AddIsToWhenConditionFix)
DEFAULT_VALUE_NOT_ALLOWED_IN_OVERRIDE.registerFactory(RemoveDefaultParameterValueFix)
ACTUAL_FUNCTION_WITH_DEFAULT_ARGUMENTS.registerFactory(RemoveDefaultParameterValueFix)
}
}
@@ -0,0 +1,30 @@
package org.jetbrains.kotlin.idea.quickfix
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.idea.util.CommentSaver
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtParameter
class RemoveDefaultParameterValueFix(parameter: KtParameter) : KotlinQuickFixAction<KtParameter>(parameter) {
override fun getText() = "Remove default parameter value"
override fun getFamilyName() = text
override fun invoke(project: Project, editor: Editor?, file: KtFile) {
val parameter = element ?: return
val typeReference = parameter.typeReference ?: return
val defaultValue = parameter.defaultValue ?: return
val commentSaver = CommentSaver(parameter)
parameter.deleteChildRange(typeReference.nextSibling, defaultValue)
commentSaver.restore(parameter)
}
companion object : KotlinSingleIntentionActionFactory() {
override fun createAction(diagnostic: Diagnostic): KotlinQuickFixAction<KtParameter>? =
(diagnostic.psiElement as? KtParameter)?.let { RemoveDefaultParameterValueFix(it) }
}
}