deprecating jvm.actions.MemberRequest.Modifier in favour of ChangeModifierRequest

`MemberRequest.Property` already considered as deprecated
This commit is contained in:
Nicolay Mitropolsky
2018-08-22 20:06:42 +03:00
parent d23f58a523
commit b58bb14d57
8 changed files with 48 additions and 4 deletions

View File

@@ -0,0 +1,13 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.lang.jvm.actions;
import com.intellij.lang.jvm.JvmModifier;
import org.jetbrains.annotations.NotNull;
public interface ChangeModifierRequest extends ActionRequest {
@NotNull
JvmModifier getModifier();
boolean shouldBePresent();
}

View File

@@ -18,6 +18,10 @@ import com.intellij.lang.jvm.JvmModifiersOwner
*/
abstract class JvmElementActionsFactory {
open fun createChangeModifierActions(target: JvmModifiersOwner, request: ChangeModifierRequest): List<IntentionAction> =
createChangeModifierActions(target, MemberRequest.Modifier(request.modifier, request.shouldBePresent()))
@Deprecated(message = "use createChangeModifierActions(JvmModifiersOwner, ChangeModifierRequest)")
open fun createChangeModifierActions(target: JvmModifiersOwner, request: MemberRequest.Modifier): List<IntentionAction> = emptyList()
open fun createAddAnnotationActions(target: JvmModifiersOwner, request: AnnotationRequest): List<IntentionAction> = emptyList()
@@ -32,4 +36,5 @@ abstract class JvmElementActionsFactory {
open fun createAddConstructorActions(targetClass: JvmClass, request: CreateConstructorRequest): List<IntentionAction> = emptyList()
open fun createChangeParametersActions(target: JvmMethod, request: ChangeParametersRequest): List<IntentionAction> = emptyList()
}

View File

@@ -4,8 +4,10 @@ package com.intellij.lang.jvm.actions
import com.intellij.lang.jvm.JvmModifier
import com.intellij.lang.jvm.types.JvmType
@Deprecated("use api based on ChangeModifierRequest or CreateMethodRequest")
sealed class MemberRequest {
@Deprecated("use `com.intellij.lang.jvm.actions.CreateMethodRequest`")
class Property(
val propertyName: String,
val visibilityModifier: JvmModifier,
@@ -14,6 +16,7 @@ sealed class MemberRequest {
val getterRequired: Boolean
) : MemberRequest()
@Deprecated("use `com.intellij.lang.jvm.actions.ChangeModifierRequest`")
class Modifier(
val modifier: JvmModifier,
val shouldPresent: Boolean

View File

@@ -39,6 +39,10 @@ fun createAddAnnotationActions(target: JvmModifiersOwner, request: AnnotationReq
}
}
fun createModifierActions(target: JvmModifiersOwner, request: ChangeModifierRequest): List<IntentionAction> =
createActions { it.createChangeModifierActions(target, request) }
@Deprecated("use createModifierActions(JvmModifiersOwner, ChangeModifierRequest)")
fun createModifierActions(target: JvmModifiersOwner, request: MemberRequest.Modifier): List<IntentionAction> {
return createActions {
it.createChangeModifierActions(target, request)

View File

@@ -0,0 +1,10 @@
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.lang.jvm.actions
import com.intellij.lang.jvm.JvmModifier
fun modifierRequest(modifier: JvmModifier, shouldBePresent: Boolean) = object : ChangeModifierRequest {
override fun isValid(): Boolean = true
override fun getModifier(): JvmModifier = modifier
override fun shouldBePresent(): Boolean = shouldBePresent
}

View File

@@ -23,8 +23,8 @@ import com.intellij.lang.jvm.JvmClass
import com.intellij.lang.jvm.JvmModifier
import com.intellij.lang.jvm.JvmModifiersOwner
import com.intellij.lang.jvm.JvmNamedElement
import com.intellij.lang.jvm.actions.MemberRequest
import com.intellij.lang.jvm.actions.createModifierActions
import com.intellij.lang.jvm.actions.modifierRequest
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.project.Project
@@ -182,7 +182,7 @@ class ImplicitSubclassInspection : LocalInspectionTool() {
shouldPresent: Boolean,
actionsList: SmartList<IntentionAction>) {
if (declaration.hasModifier(modifier) == shouldPresent) return
val request = MemberRequest.Modifier(modifier, shouldPresent)
val request = modifierRequest(modifier, shouldPresent)
actionsList += createModifierActions(declaration, request)
}

View File

@@ -22,6 +22,15 @@ class JavaElementActionsFactory(private val renderer: JavaElementRenderer) : Jvm
listOf(ModifierFix(declaration.modifierList, renderer.render(modifier), shouldPresent, false))
}
override fun createChangeModifierActions(target: JvmModifiersOwner, request: ChangeModifierRequest): List<IntentionAction> {
val declaration = target as PsiModifierListOwner
if (declaration.language != JavaLanguage.INSTANCE) return emptyList()
val fix = object : ModifierFix(declaration.modifierList, renderer.render(request.modifier), request.shouldBePresent(), false) {
override fun isAvailable(): Boolean = request.isValid && super.isAvailable()
}
return listOf(fix)
}
override fun createAddAnnotationActions(target: JvmModifiersOwner, request: AnnotationRequest): List<IntentionAction> {
val declaration = target as? PsiModifierListOwner ?: return emptyList()
if (declaration.language != JavaLanguage.INSTANCE) return emptyList()

View File

@@ -7,8 +7,8 @@ import com.intellij.lang.jvm.DefaultJvmElementVisitor
import com.intellij.lang.jvm.JvmClass
import com.intellij.lang.jvm.JvmElementVisitor
import com.intellij.lang.jvm.JvmModifier
import com.intellij.lang.jvm.actions.MemberRequest
import com.intellij.lang.jvm.actions.createModifierActions
import com.intellij.lang.jvm.actions.modifierRequest
import com.intellij.lang.jvm.inspection.JvmLocalInspection
import com.intellij.openapi.project.Project
import com.siyeh.ig.junit.JUnitCommonClassNames
@@ -21,7 +21,7 @@ class JUnit5MalformedNestedClassInspection : JvmLocalInspection() {
clazz.hasModifier(JvmModifier.STATIC) &&
clazz.hasAnnotation(JUnitCommonClassNames.ORG_JUNIT_JUPITER_API_NESTED)) {
val fixes = createModifierActions(clazz, MemberRequest.Modifier(JvmModifier.STATIC, false)).toTypedArray()
val fixes = createModifierActions(clazz, modifierRequest(JvmModifier.STATIC, false)).toTypedArray()
sink.highlight("Only non-static nested classes can serve as @Nested test classes.",
ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
*IntentionWrapper.wrapToQuickFixes(fixes, clazz.sourceElement!!.containingFile))