mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] k2: Make "Make open" quick fix work from Java code
^KTIJ-26318 GitOrigin-RevId: 25d67416b5ab5560080a9496cae9589b07c1b6dd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3755acff68
commit
34a29f53df
+5
@@ -980,6 +980,11 @@ public abstract class HighLevelQuickFixMultiFileTestGenerated extends AbstractHi
|
||||
KotlinTestUtils.runTest(this::doTestWithExtraFile, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("extendsFromJava.before.Main.java")
|
||||
public void testExtendsFromJava() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/modifiers/addOpenToClassDeclaration/extendsFromJava.before.Main.java");
|
||||
}
|
||||
|
||||
@TestMetadata("finalJavaSupertype.before.Main.kt")
|
||||
public void testFinalJavaSupertype() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/modifiers/addOpenToClassDeclaration/finalJavaSupertype.before.Main.kt");
|
||||
|
||||
+17
@@ -4,18 +4,35 @@ package org.jetbrains.kotlin.idea.k2.codeinsight.quickFixes.createFromUsage
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import com.intellij.codeInsight.intention.impl.BaseIntentionAction
|
||||
import com.intellij.lang.jvm.JvmClass
|
||||
import com.intellij.lang.jvm.JvmModifier
|
||||
import com.intellij.lang.jvm.JvmModifiersOwner
|
||||
import com.intellij.lang.jvm.actions.ChangeModifierRequest
|
||||
import com.intellij.lang.jvm.actions.CreateMethodRequest
|
||||
import com.intellij.lang.jvm.actions.JvmElementActionsFactory
|
||||
import com.intellij.psi.PsiElement
|
||||
import com.intellij.psi.createSmartPointer
|
||||
import org.jetbrains.kotlin.asJava.unwrapped
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.k2.codeinsight.quickFixes.createFromUsage.K2CreateFromUsageUtil.toKtClassOrFile
|
||||
import org.jetbrains.kotlin.idea.quickfix.AddModifierFix
|
||||
import org.jetbrains.kotlin.idea.refactoring.isAbstract
|
||||
import org.jetbrains.kotlin.idea.refactoring.isInterfaceClass
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtModifierListOwner
|
||||
|
||||
class K2ElementActionsFactory : JvmElementActionsFactory() {
|
||||
override fun createChangeModifierActions(target: JvmModifiersOwner, request: ChangeModifierRequest): List<IntentionAction> {
|
||||
val kModifierOwner = target.sourceElement?.unwrapped as? KtModifierListOwner ?: return emptyList()
|
||||
|
||||
if (request.modifier != JvmModifier.FINAL || request.shouldBePresent()) return emptyList()
|
||||
|
||||
return listOf(
|
||||
AddModifierFix(kModifierOwner, KtTokens.OPEN_KEYWORD)
|
||||
)
|
||||
}
|
||||
|
||||
override fun createAddMethodActions(targetClass: JvmClass, request: CreateMethodRequest): List<IntentionAction> {
|
||||
if (targetClass is PsiElement && !BaseIntentionAction.canModify(targetClass)) return emptyList()
|
||||
var container = targetClass.toKtClassOrFile() ?: return emptyList()
|
||||
|
||||
+5
@@ -2156,6 +2156,11 @@ public abstract class QuickFixMultiFileTestGenerated extends AbstractQuickFixMul
|
||||
KotlinTestUtils.runTest(this::doTestWithExtraFile, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("extendsFromJava.before.Main.java")
|
||||
public void testExtendsFromJava() throws Exception {
|
||||
runTest("testData/quickfix/modifiers/addOpenToClassDeclaration/extendsFromJava.before.Main.java");
|
||||
}
|
||||
|
||||
@TestMetadata("finalJavaSupertype.before.Main.kt")
|
||||
public void testFinalJavaSupertype() throws Exception {
|
||||
runTest("testData/quickfix/modifiers/addOpenToClassDeclaration/finalJavaSupertype.before.Main.kt");
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
open class BaseClass
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// "Make 'BaseClass' 'open'" "true"
|
||||
class ChildClass extends BaseClass<selection><caret></selection> {}
|
||||
+1
@@ -0,0 +1 @@
|
||||
class BaseClass
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
// "Make 'BaseClass' 'open'" "true"
|
||||
class ChildClass extends BaseClass<caret> {}
|
||||
Reference in New Issue
Block a user