mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[kotlin k2] Fix ChangeToFunctionInvocationFix producing invalid code for generic function
^KTIJ-30062 GitOrigin-RevId: 21c2817779ee0b8d662d902d8a68d33b28c672cd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
0ab6a8e24f
commit
f572557a66
+9
-4
@@ -4,15 +4,20 @@ 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.ChangeToFunctionInvocationFix
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtTypeArgumentList
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespaceAndComments
|
||||
|
||||
internal object ChangeToFunctionInvocationFixFactory {
|
||||
|
||||
val changeToFunctionInvocationFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.FunctionCallExpected ->
|
||||
val expression = diagnostic.psi as? KtExpression ?: return@ModCommandBased emptyList()
|
||||
|
||||
listOf(
|
||||
ChangeToFunctionInvocationFix(expression)
|
||||
)
|
||||
val next = expression.getNextSiblingIgnoringWhitespaceAndComments()
|
||||
val parent = expression.parent
|
||||
if (next is KtTypeArgumentList && parent is KtCallExpression) {
|
||||
return@ModCommandBased listOf(ChangeToFunctionInvocationFix(parent))
|
||||
}
|
||||
listOf(ChangeToFunctionInvocationFix(expression))
|
||||
}
|
||||
}
|
||||
+5
@@ -6119,6 +6119,11 @@ public abstract class HighLevelQuickFixTestGenerated extends AbstractHighLevelQu
|
||||
runTest("../../../idea/tests/testData/quickfix/variables/changeToFunctionInvocation/funInvWithoutParentheses.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("genericFunction.kt")
|
||||
public void testGenericFunction() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/variables/changeToFunctionInvocation/genericFunction.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("inStringTemplate.kt")
|
||||
public void testInStringTemplate() throws Exception {
|
||||
runTest("../../../idea/tests/testData/quickfix/variables/changeToFunctionInvocation/inStringTemplate.kt");
|
||||
|
||||
+5
@@ -17718,6 +17718,11 @@ public abstract class K1QuickFixTestGenerated extends AbstractK1QuickFixTest {
|
||||
runTest("testData/quickfix/variables/changeToFunctionInvocation/funInvWithoutParentheses.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("genericFunction.kt")
|
||||
public void testGenericFunction() throws Exception {
|
||||
runTest("testData/quickfix/variables/changeToFunctionInvocation/genericFunction.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("inStringTemplate.kt")
|
||||
public void testInStringTemplate() throws Exception {
|
||||
runTest("testData/quickfix/variables/changeToFunctionInvocation/inStringTemplate.kt");
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// "Change to function invocation" "true"
|
||||
// ERROR: No value passed for parameter 'i'
|
||||
fun <T> foo(i: Int) = 42
|
||||
|
||||
fun main() {
|
||||
val listFoo = foo<caret><String>
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.ChangeToFunctionInvocationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.ChangeToFunctionInvocationFix
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// "Change to function invocation" "true"
|
||||
// ERROR: No value passed for parameter 'i'
|
||||
fun <T> foo(i: Int) = 42
|
||||
|
||||
fun main() {
|
||||
val listFoo = foo<String>()
|
||||
}
|
||||
|
||||
// FUS_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.ChangeToFunctionInvocationFix
|
||||
// FUS_K2_QUICKFIX_NAME: org.jetbrains.kotlin.idea.quickfix.ChangeToFunctionInvocationFix
|
||||
Reference in New Issue
Block a user