diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index 68c0a3a5482..2742fe4eed5 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -1369,6 +1369,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { runTest("compiler/testData/ir/irText/expressions/callableReferences/importedFromObject.kt"); } + @TestMetadata("letArrayOf.kt") + public void testLetArrayOf() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.kt"); + } + @TestMetadata("typeArguments.kt") public void testTypeArguments() throws Exception { runTest("compiler/testData/ir/irText/expressions/callableReferences/typeArguments.kt"); diff --git a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt index 199912b9558..443484d834f 100644 --- a/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt +++ b/compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt @@ -275,9 +275,10 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St } for ((valueParameter, valueArgument) in adaptedArguments) { + val substitutedValueParameter = resolvedCall.resultingDescriptor.valueParameters[valueParameter.index] irAdapteeCall.putValueArgument( valueParameter.index, - adaptResolvedValueArgument(startOffset, endOffset, valueArgument, irAdapterFun, valueParameter) + adaptResolvedValueArgument(startOffset, endOffset, valueArgument, irAdapterFun, substitutedValueParameter) ) } } diff --git a/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.fir.txt b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.fir.txt new file mode 100644 index 00000000000..f8195b98522 --- /dev/null +++ b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.fir.txt @@ -0,0 +1,6 @@ +FILE fqName: fileName:/letArrayOf.kt + FUN name:test visibility:public modality:FINAL <> () returnType:IrErrorType + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun test (): IrErrorType declared in ' + ERROR_CALL 'Unresolved reference: #' type=IrErrorType + FUNCTION_REFERENCE 'public final fun arrayOf (elements: kotlin.Array): kotlin.Array [inline] declared in kotlin' type=kotlin.reflect.KFunction1, kotlin.Array> origin=null reflectionTarget= diff --git a/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.kt b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.kt new file mode 100644 index 00000000000..490b3fe7161 --- /dev/null +++ b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.kt @@ -0,0 +1,3 @@ +// !LANGUAGE: +NewInference + +fun test() = "OK".let(::arrayOf) \ No newline at end of file diff --git a/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.txt b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.txt new file mode 100644 index 00000000000..75b55fa82b7 --- /dev/null +++ b/compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.txt @@ -0,0 +1,18 @@ +FILE fqName: fileName:/letArrayOf.kt + FUN name:test visibility:public modality:FINAL <> () returnType:kotlin.Array + BLOCK_BODY + RETURN type=kotlin.Nothing from='public final fun test (): kotlin.Array declared in ' + CALL 'public final fun let (block: kotlin.Function1): R of kotlin.let [inline] declared in kotlin' type=kotlin.Array origin=null + : kotlin.String + : kotlin.Array + $receiver: CONST String type=kotlin.String value="OK" + block: BLOCK type=kotlin.reflect.KFunction1> origin=null + FUN ADAPTER_FOR_CALLABLE_REFERENCE name:arrayOf visibility:local modality:FINAL <> (p0:kotlin.String) returnType:kotlin.Array [inline] + VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.String + BLOCK_BODY + RETURN type=kotlin.Nothing from='local final fun arrayOf (p0: kotlin.String): kotlin.Array [inline] declared in .test' + CALL 'public final fun arrayOf (vararg elements: T of kotlin.arrayOf): kotlin.Array [inline] declared in kotlin' type=kotlin.Array origin=null + : kotlin.String + elements: VARARG type=kotlin.Array varargElementType=kotlin.String + GET_VAR 'p0: kotlin.String declared in .test.arrayOf' type=kotlin.String origin=null + FUNCTION_REFERENCE 'local final fun arrayOf (p0: kotlin.String): kotlin.Array [inline] declared in .test' type=kotlin.reflect.KFunction1> origin=null reflectionTarget=null diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index be418b520f7..3a84e781780 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -1368,6 +1368,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { runTest("compiler/testData/ir/irText/expressions/callableReferences/importedFromObject.kt"); } + @TestMetadata("letArrayOf.kt") + public void testLetArrayOf() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/letArrayOf.kt"); + } + @TestMetadata("typeArguments.kt") public void testTypeArguments() throws Exception { runTest("compiler/testData/ir/irText/expressions/callableReferences/typeArguments.kt");