diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index e4adcf6a73e..36a66193669 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -487,6 +487,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.173 b/idea/src/META-INF/plugin.xml.173 index ef57f167363..c5f3a12a417 100644 --- a/idea/src/META-INF/plugin.xml.173 +++ b/idea/src/META-INF/plugin.xml.173 @@ -485,6 +485,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.181 b/idea/src/META-INF/plugin.xml.181 index f233c1519be..7b3ef30d99a 100644 --- a/idea/src/META-INF/plugin.xml.181 +++ b/idea/src/META-INF/plugin.xml.181 @@ -486,6 +486,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.183 b/idea/src/META-INF/plugin.xml.183 index 6a2396ddc01..590bd56aeda 100644 --- a/idea/src/META-INF/plugin.xml.183 +++ b/idea/src/META-INF/plugin.xml.183 @@ -487,6 +487,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.as31 b/idea/src/META-INF/plugin.xml.as31 index 93293e4ee17..a6dc1c5f98e 100644 --- a/idea/src/META-INF/plugin.xml.as31 +++ b/idea/src/META-INF/plugin.xml.as31 @@ -485,6 +485,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.as32 b/idea/src/META-INF/plugin.xml.as32 index 67144998e85..e998f2fe741 100644 --- a/idea/src/META-INF/plugin.xml.as32 +++ b/idea/src/META-INF/plugin.xml.as32 @@ -485,6 +485,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/META-INF/plugin.xml.as33 b/idea/src/META-INF/plugin.xml.as33 index fb092ec85c4..b5f9d144c23 100644 --- a/idea/src/META-INF/plugin.xml.as33 +++ b/idea/src/META-INF/plugin.xml.as33 @@ -486,6 +486,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + diff --git a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt index 915ff3aaa73..2276540fc3a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinFunctionParameterInfoHandler.kt @@ -65,6 +65,20 @@ class KotlinFunctionParameterInfoHandler : KotlinParameterInfoWithCallHandlerBas override fun getArgumentListAllowedParentClasses() = setOf(KtCallElement::class.java) } +class KotlinLambdaParameterInfoHandler : + KotlinParameterInfoWithCallHandlerBase(KtLambdaArgument::class, KtLambdaArgument::class) { + override fun getActualParameters(lambdaArgument: KtLambdaArgument) = arrayOf(lambdaArgument) + + override fun getActualParametersRBraceType() = KtTokens.RBRACE + + override fun getArgumentListAllowedParentClasses() = setOf(KtLambdaArgument::class.java) + + override fun getParameterIndex(context: UpdateParameterInfoContext, argumentList: KtLambdaArgument): Int { + val size = (argumentList.parent as? KtCallElement)?.valueArguments?.size ?: 1 + return size - 1 + } +} + class KotlinArrayAccessParameterInfoHandler : KotlinParameterInfoWithCallHandlerBase(KtContainerNode::class, KtExpression::class) { override fun getArgumentListAllowedParentClasses() = setOf(KtArrayAccessExpression::class.java) @@ -115,7 +129,7 @@ abstract class KotlinParameterInfoWithCallHandlerBase it.length } +} + +fun foo(f: (String) -> Int) {} +//Text: (f: (String) -> Int), Disabled: false, Strikeout: false, Green: true \ No newline at end of file diff --git a/idea/testData/parameterInfo/functionCall/lambdaArgument2.kt b/idea/testData/parameterInfo/functionCall/lambdaArgument2.kt new file mode 100644 index 00000000000..586a4f5196b --- /dev/null +++ b/idea/testData/parameterInfo/functionCall/lambdaArgument2.kt @@ -0,0 +1,6 @@ +fun test() { + foo({ 1 }, { 2 }) { it.length } +} + +fun foo(a: (Unit) -> Int, b: (Unit) -> Int, c: (String) -> Int) {} +//Text: (a: (Unit) -> Int, b: (Unit) -> Int, c: (String) -> Int), Disabled: false, Strikeout: false, Green: true \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java index 18111d56d86..68975e37bbf 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/ParameterInfoTestGenerated.java @@ -167,6 +167,16 @@ public class ParameterInfoTestGenerated extends AbstractParameterInfoTest { runTest("idea/testData/parameterInfo/functionCall/Invoke.kt"); } + @TestMetadata("lambdaArgument.kt") + public void testLambdaArgument() throws Exception { + runTest("idea/testData/parameterInfo/functionCall/lambdaArgument.kt"); + } + + @TestMetadata("lambdaArgument2.kt") + public void testLambdaArgument2() throws Exception { + runTest("idea/testData/parameterInfo/functionCall/lambdaArgument2.kt"); + } + @TestMetadata("LocalFunctionBug.kt") public void testLocalFunctionBug() throws Exception { runTest("idea/testData/parameterInfo/functionCall/LocalFunctionBug.kt");