mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin] Port AddInlineToFunctionFix to K2
^KTIJ-29430 GitOrigin-RevId: f0875322c96650624164a21e86a4580a09d613c7
This commit is contained in:
committed by
intellij-monorepo-bot
parent
a8894c9742
commit
8eed07db2d
+47
@@ -0,0 +1,47 @@
|
||||
// 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 com.intellij.modcommand.ActionContext
|
||||
import com.intellij.modcommand.ModPsiUpdater
|
||||
import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KtFirDiagnostic
|
||||
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicable.intentions.KotlinPsiUpdateModCommandAction
|
||||
import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtFunction
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
|
||||
internal object AddInlineToFunctionFixFactories {
|
||||
|
||||
val illegalInlineParameterModifierFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KtFirDiagnostic.IllegalInlineParameterModifier ->
|
||||
val function = diagnostic.psi.getParentOfType<KtFunction>(true) ?: return@ModCommandBased emptyList()
|
||||
if (function.isLocal) {
|
||||
return@ModCommandBased emptyList()
|
||||
}
|
||||
listOf(AddInlineToFunctionFix(function))
|
||||
}
|
||||
|
||||
private class AddInlineToFunctionFix(
|
||||
element: KtFunction,
|
||||
) : KotlinPsiUpdateModCommandAction.ElementBased<KtFunction, Unit>(element, Unit) {
|
||||
|
||||
override fun invoke(
|
||||
actionContext: ActionContext,
|
||||
element: KtFunction,
|
||||
elementContext: Unit,
|
||||
updater: ModPsiUpdater,
|
||||
) {
|
||||
element.addModifier(KtTokens.INLINE_KEYWORD)
|
||||
}
|
||||
|
||||
override fun getActionName(
|
||||
actionContext: ActionContext,
|
||||
element: KtFunction,
|
||||
elementContext: Unit
|
||||
): String {
|
||||
return KotlinBundle.message("fix.add.modifier.inline.function.text", element.name.toString())
|
||||
}
|
||||
|
||||
override fun getFamilyName(): String = KotlinBundle.message("fix.add.modifier.inline.function.family")
|
||||
}
|
||||
}
|
||||
+1
@@ -110,6 +110,7 @@ class KotlinK2QuickFixRegistrar : KotlinQuickFixRegistrar() {
|
||||
registerFactory(AddInlineModifierFixFactories.nonLocalReturnNotAllowed)
|
||||
registerFactory(AddInlineModifierFixFactories.inlineSuspendFunctionTypeUnsupported)
|
||||
registerFactory(MakeTypeParameterReifiedAndFunctionInlineFixFactory.cannotCheckForErasedFactory)
|
||||
registerFactory(AddInlineToFunctionFixFactories.illegalInlineParameterModifierFactory)
|
||||
}
|
||||
|
||||
private val propertyInitialization = KtQuickFixesListBuilder.registerPsiQuickFix {
|
||||
|
||||
+16
@@ -4851,7 +4851,23 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
|
||||
|
||||
|
||||
|
||||
@RunWith(JUnit3RunnerWithInners.class)
|
||||
@TestMetadata("../../../idea/tests/testData/quickfix/addInline")
|
||||
public static class AddInline extends AbstractHighLevelQuickFixTest {
|
||||
private void runTest(String testDataFilePath) throws Exception {
|
||||
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
||||
}
|
||||
|
||||
@TestMetadata("basic.kt")
|
||||
public void testBasic() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addInline/basic.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("local.kt")
|
||||
public void testLocal() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/addInline/local.kt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,4 +4,5 @@ fun foo(<caret>crossinline body: () -> Unit) {
|
||||
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddInlineToFunctionFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddInlineToFunctionFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddInlineToFunctionFixFactories$AddInlineToFunctionFix
|
||||
@@ -4,4 +4,5 @@ inline fun foo(<caret>crossinline body: () -> Unit) {
|
||||
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddInlineToFunctionFix
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.AddInlineToFunctionFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.k2.codeinsight.fixes.AddInlineToFunctionFixFactories$AddInlineToFunctionFix
|
||||
+1
-1
@@ -68,7 +68,7 @@ internal fun MutableTWorkspace.generateK2FixTests() {
|
||||
model("$idea/quickfix/addEqEqTrue", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addFunModifier", pattern = pattern)
|
||||
model("$idea/quickfix/addGenericUpperBound", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addInline", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addInline", pattern = pattern)
|
||||
model("$idea/quickfix/addInlineToReifiedFunctionFix", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addIsToWhenCondition", pattern = pattern, isIgnored = true)
|
||||
model("$idea/quickfix/addJvmInline", pattern = pattern, isIgnored = true)
|
||||
|
||||
Reference in New Issue
Block a user