mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Port AddJvmStaticAnnotationFix to K2
^KTIJ-29549 GitOrigin-RevId: 0348c83d1586fc3287ba61b37d6addbca8f7bbbb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
b06ae5833a
commit
1264247d84
+1
@@ -138,6 +138,7 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
|
||||
registerFactory(MisplacedTypeParameterConstraintsFixFactory.moveConstraintToWhereClause)
|
||||
registerFactory(AbstractFunctionWithBodyFixFactory.removeFunctionBody)
|
||||
registerFactory(SenselessNullInWhenFixFactory.removeCondition)
|
||||
registerFactory(SubclassCantCallCompanionProtectedNonStaticFixFactory.addJvmStaticAnnotation)
|
||||
}
|
||||
|
||||
private val addAbstract = KtQuickFixesListBuilder.registerPsiQuickFix {
|
||||
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.k2.codeinsight.fixes
|
||||
|
||||
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
|
||||
import org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
|
||||
internal object SubclassCantCallCompanionProtectedNonStaticFixFactory {
|
||||
|
||||
val addJvmStaticAnnotation = KotlinQuickFixFactory.IntentionBased { diagnostic: KaFirDiagnostic.SubclassCantCallCompanionProtectedNonStatic ->
|
||||
val nameReference = diagnostic.psi as? KtNameReferenceExpression ?: return@IntentionBased emptyList()
|
||||
|
||||
listOfNotNull(
|
||||
AddJvmStaticAnnotationFix.createIfApplicable(nameReference)
|
||||
)
|
||||
}
|
||||
}
|
||||
+22
@@ -6112,7 +6112,29 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
|
||||
}
|
||||
}
|
||||
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
@TestMetadata("../../../idea/tests/testData/quickfix/addJvmStaticAnnotation")
|
||||
public static class AddJvmStaticAnnotation extends AbstractHighLevelQuickFixTest {
|
||||
@java.lang.Override
|
||||
@org.jetbrains.annotations.NotNull
|
||||
public final KotlinPluginMode getPluginMode() {
|
||||
return KotlinPluginMode.K2;
|
||||
}
|
||||
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("function.kt")
|
||||
public void testFunction() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addJvmStaticAnnotation/function.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("property.kt")
|
||||
public void testProperty() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addJvmStaticAnnotation/property.kt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
+15
@@ -1,9 +1,13 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
|
||||
class AddJvmStaticAnnotationFix(declaration: KtCallableDeclaration) : AddAnnotationFix(
|
||||
declaration,
|
||||
@@ -11,4 +15,15 @@ class AddJvmStaticAnnotationFix(declaration: KtCallableDeclaration) : AddAnnotat
|
||||
Kind.Declaration(declaration.nameAsSafeName.asString())
|
||||
) {
|
||||
override fun getFamilyName(): String = text
|
||||
|
||||
companion object {
|
||||
fun createIfApplicable(element: KtNameReferenceExpression): AddJvmStaticAnnotationFix? {
|
||||
val resolved = element.mainReference.resolve() ?: return null
|
||||
return if (resolved is KtProperty || resolved is KtNamedFunction) {
|
||||
AddJvmStaticAnnotationFix(resolved as KtCallableDeclaration)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-10
@@ -3,20 +3,11 @@ package org.jetbrains.kotlin.idea.quickfix
|
||||
|
||||
import com.intellij.codeInsight.intention.IntentionAction
|
||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||
import org.jetbrains.kotlin.idea.references.mainReference
|
||||
import org.jetbrains.kotlin.psi.KtCallableDeclaration
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
|
||||
internal object AddJvmStaticAnnotationFixFactory : KotlinSingleIntentionActionFactory() {
|
||||
override fun createAction(diagnostic: Diagnostic): IntentionAction? {
|
||||
val nameReference = diagnostic.psiElement as? KtNameReferenceExpression ?: return null
|
||||
val resolved = nameReference.mainReference.resolve() ?: return null
|
||||
return if (resolved is KtProperty || resolved is KtNamedFunction) {
|
||||
AddJvmStaticAnnotationFix(resolved as KtCallableDeclaration)
|
||||
} else {
|
||||
null
|
||||
}
|
||||
return AddJvmStaticAnnotationFix.createIfApplicable(nameReference)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,5 @@ class B : A() {
|
||||
}
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
+2
-1
@@ -13,4 +13,5 @@ class B : A() {
|
||||
}
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
@@ -12,4 +12,5 @@ class B : A() {
|
||||
}
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
+2
-1
@@ -13,4 +13,5 @@ class B : A() {
|
||||
}
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddJvmStaticAnnotationFix
|
||||
+1
-1
@@ -76,7 +76,7 @@ internal fun MutableTWorkspace.generateK2FixTests() {
|
||||
model("$idea/quickfix/addInlineToReifiedFunctionFix", pattern = pattern)
|
||||
model("$idea/quickfix/addIsToWhenCondition", pattern = pattern)
|
||||
model("$idea/quickfix/addJvmInline", pattern = pattern)
|
||||
model("$idea/quickfix/addJvmStaticAnnotation", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addJvmStaticAnnotation", pattern = pattern)
|
||||
model("$idea/quickfix/addNewLineAfterAnnotations", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addNoinline", pattern = pattern)
|
||||
model("$idea/quickfix/addReifiedToTypeParameterOfFunctionFix", pattern = pattern)
|
||||
|
||||
Reference in New Issue
Block a user