Skip to content

Commit 2c4fceb

Browse files
author
Georgy Bronnikov
committed
IR: handle adapted bound references
1 parent 1827465 commit 2c4fceb

File tree

22 files changed

+101
-39
lines changed

22 files changed

+101
-39
lines changed

compiler/fir/fir2ir/tests/org/jetbrains/kotlin/codegen/ir/FirBlackBoxCodegenTestGenerated.java

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/generators/ReflectionReferencesGenerator.kt

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@
1717
package org.jetbrains.kotlin.psi2ir.generators
1818

1919
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
20+
import org.jetbrains.kotlin.builtins.createFunctionType
21+
import org.jetbrains.kotlin.builtins.isKFunctionType
22+
import org.jetbrains.kotlin.builtins.isKSuspendFunctionType
2023
import org.jetbrains.kotlin.descriptors.*
2124
import org.jetbrains.kotlin.ir.declarations.*
2225
import org.jetbrains.kotlin.ir.declarations.impl.IrFunctionImpl
@@ -28,6 +31,9 @@ import org.jetbrains.kotlin.ir.expressions.impl.*
2831
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
2932
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
3033
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
34+
import org.jetbrains.kotlin.ir.types.IrSimpleType
35+
import org.jetbrains.kotlin.ir.types.defaultType
36+
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
3137
import org.jetbrains.kotlin.ir.util.referenceClassifier
3238
import org.jetbrains.kotlin.ir.util.referenceFunction
3339
import org.jetbrains.kotlin.ir.util.withScope
@@ -116,7 +122,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
116122
val adapteeSymbol = context.symbolTable.referenceFunction(adapteeDescriptor.original)
117123

118124
val ktFunctionalType = getTypeInferredByFrontendOrFail(ktCallableReference)
119-
val irFunctionalType = ktFunctionalType.toIrType()
125+
val irFunctionalType = ktFunctionalType.maybeKFunctionTypeToFunctionType().toIrType()
120126

121127
val ktFunctionalTypeArguments = ktFunctionalType.arguments
122128
val ktExpectedReturnType = ktFunctionalTypeArguments.last().type
@@ -137,7 +143,7 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
137143
startOffset, endOffset,
138144
irFunctionalType,
139145
irAdapterFun,
140-
IrStatementOrigin.LAMBDA
146+
IrStatementOrigin.ADAPTED_FUNCTION_REFERENCE
141147
)
142148

143149
return if (adapteeCall.tmpReceivers.isEmpty()) {
@@ -487,4 +493,21 @@ class ReflectionReferencesGenerator(statementGenerator: StatementGenerator) : St
487493
context.callToSubstitutedDescriptorMap[this] = descriptor
488494
putTypeArguments(typeArguments) { it.toIrType() }
489495
}
496+
497+
// This patches up a frontend bug -- adapted references are mistakenly given a KFunction type.
498+
private fun KotlinType.maybeKFunctionTypeToFunctionType() = when {
499+
isKFunctionType -> kFunctionTypeToFunctionType(false)
500+
isKSuspendFunctionType -> kFunctionTypeToFunctionType(true)
501+
else -> this
502+
}
503+
504+
private fun KotlinType.kFunctionTypeToFunctionType(suspendFunction: Boolean) = createFunctionType(
505+
statementGenerator.context.builtIns,
506+
annotations,
507+
null,
508+
arguments.dropLast(1).map { it.type },
509+
null,
510+
arguments.last().type,
511+
suspendFunction
512+
)
490513
}

compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/expressions/IrStatementOrigin.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ interface IrStatementOrigin {
8989
object DEFAULT_VALUE : IrStatementOriginImpl("DEFAULT_VALUE")
9090
object ANONYMOUS_FUNCTION : IrStatementOriginImpl("ANONYMOUS_FUNCTION")
9191
object OBJECT_LITERAL : IrStatementOriginImpl("OBJECT_LITERAL")
92+
object ADAPTED_FUNCTION_REFERENCE : IrStatementOriginImpl("ADAPTED_FUNCTION_REFERENCE")
9293

9394
object INITIALIZE_PROPERTY_FROM_PARAMETER : IrStatementOriginImpl("INITIALIZE_PROPERTY_FROM_PARAMETER")
9495
object INITIALIZE_FIELD : IrStatementOriginImpl("INITIALIZE_FIELD")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class C {
2+
fun ffff(i: Int, s: String = "OK") = s
3+
}
4+
5+
fun box(): String = 42.run(C()::ffff)

compiler/testData/ir/irText/expressions/callableReferences/adaptedExtensionFunctions.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ FILE fqName:<root> fileName:/adaptedExtensionFunctions.kt
4444
FUN name:testExtensionVararg visibility:public modality:FINAL <> () returnType:kotlin.Unit
4545
BLOCK_BODY
4646
CALL 'public final fun use (f: @[ExtensionFunctionType] kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
47-
f: FUN_EXPR type=kotlin.reflect.KFunction2<<root>.C, kotlin.Int, kotlin.Unit> origin=LAMBDA
47+
f: FUN_EXPR type=kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
4848
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:extensionVararg visibility:local modality:FINAL <> (p0:<root>.C, p1:kotlin.Int) returnType:kotlin.Unit
4949
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:<root>.C
5050
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p1 index:1 type:kotlin.Int
@@ -55,7 +55,7 @@ FILE fqName:<root> fileName:/adaptedExtensionFunctions.kt
5555
FUN name:testExtensionDefault visibility:public modality:FINAL <> () returnType:kotlin.Unit
5656
BLOCK_BODY
5757
CALL 'public final fun use (f: @[ExtensionFunctionType] kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
58-
f: FUN_EXPR type=kotlin.reflect.KFunction2<<root>.C, kotlin.Int, kotlin.Unit> origin=LAMBDA
58+
f: FUN_EXPR type=kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
5959
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:extensionDefault visibility:local modality:FINAL <> (p0:<root>.C, p1:kotlin.Int) returnType:kotlin.Unit
6060
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:<root>.C
6161
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p1 index:1 type:kotlin.Int
@@ -66,7 +66,7 @@ FILE fqName:<root> fileName:/adaptedExtensionFunctions.kt
6666
FUN name:testExtensionBoth visibility:public modality:FINAL <> () returnType:kotlin.Unit
6767
BLOCK_BODY
6868
CALL 'public final fun use (f: @[ExtensionFunctionType] kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
69-
f: FUN_EXPR type=kotlin.reflect.KFunction2<<root>.C, kotlin.Int, kotlin.Unit> origin=LAMBDA
69+
f: FUN_EXPR type=kotlin.Function2<<root>.C, kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
7070
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:extensionBoth visibility:local modality:FINAL <> (p0:<root>.C, p1:kotlin.Int) returnType:kotlin.Unit
7171
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:<root>.C
7272
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p1 index:1 type:kotlin.Int

compiler/testData/ir/irText/expressions/callableReferences/adaptedWithCoercionToUnit.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ FILE fqName:<root> fileName:/adaptedWithCoercionToUnit.kt
2323
BLOCK_BODY
2424
RETURN type=kotlin.Nothing from='public final fun test0 (): kotlin.Unit declared in <root>'
2525
CALL 'public final fun useUnit0 (fn: kotlin.Function0<kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
26-
fn: FUN_EXPR type=kotlin.reflect.KFunction0<kotlin.Unit> origin=LAMBDA
26+
fn: FUN_EXPR type=kotlin.Function0<kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
2727
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:fn0 visibility:local modality:FINAL <> () returnType:kotlin.Unit
2828
BLOCK_BODY
2929
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
@@ -32,7 +32,7 @@ FILE fqName:<root> fileName:/adaptedWithCoercionToUnit.kt
3232
BLOCK_BODY
3333
RETURN type=kotlin.Nothing from='public final fun test1 (): kotlin.Unit declared in <root>'
3434
CALL 'public final fun useUnit1 (fn: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
35-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
35+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
3636
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:fn1 visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
3737
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
3838
BLOCK_BODY
@@ -43,7 +43,7 @@ FILE fqName:<root> fileName:/adaptedWithCoercionToUnit.kt
4343
BLOCK_BODY
4444
RETURN type=kotlin.Nothing from='public final fun testV0 (): kotlin.Unit declared in <root>'
4545
CALL 'public final fun useUnit0 (fn: kotlin.Function0<kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
46-
fn: FUN_EXPR type=kotlin.reflect.KFunction0<kotlin.Unit> origin=LAMBDA
46+
fn: FUN_EXPR type=kotlin.Function0<kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
4747
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:fnv visibility:local modality:FINAL <> () returnType:kotlin.Unit
4848
BLOCK_BODY
4949
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
@@ -52,7 +52,7 @@ FILE fqName:<root> fileName:/adaptedWithCoercionToUnit.kt
5252
BLOCK_BODY
5353
RETURN type=kotlin.Nothing from='public final fun testV1 (): kotlin.Unit declared in <root>'
5454
CALL 'public final fun useUnit1 (fn: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
55-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
55+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
5656
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:fnv visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
5757
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
5858
BLOCK_BODY

compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ FILE fqName:<root> fileName:/caoWithAdaptationForSam.kt
109109
GET_OBJECT 'CLASS OBJECT name:A modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.A
110110
VAR IR_TEMPORARY_VARIABLE name:tmp_1 type:<root>.IFoo [val]
111111
TYPE_OP type=<root>.IFoo origin=SAM_CONVERSION typeOperand=<root>.IFoo
112-
FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
112+
FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
113113
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:withVararg visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
114114
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
115115
BLOCK_BODY
@@ -132,7 +132,7 @@ FILE fqName:<root> fileName:/caoWithAdaptationForSam.kt
132132
GET_OBJECT 'CLASS OBJECT name:B modality:FINAL visibility:public superTypes:[kotlin.Any]' type=<root>.B
133133
VAR IR_TEMPORARY_VARIABLE name:tmp_3 type:<root>.IFoo2 [val]
134134
TYPE_OP type=<root>.IFoo2 origin=SAM_CONVERSION typeOperand=<root>.IFoo2
135-
FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
135+
FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
136136
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:withVararg visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
137137
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
138138
BLOCK_BODY

compiler/testData/ir/irText/expressions/callableReferences/constructorWithAdaptedArguments.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ FILE fqName:<root> fileName:/constructorWithAdaptedArguments.kt
7070
BLOCK_BODY
7171
RETURN type=kotlin.Nothing from='public final fun testConstructor (): kotlin.Any declared in <root>'
7272
CALL 'public final fun use (fn: kotlin.Function1<kotlin.Int, kotlin.Any>): kotlin.Any declared in <root>' type=kotlin.Any origin=null
73-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, <root>.C> origin=LAMBDA
73+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, <root>.C> origin=ADAPTED_FUNCTION_REFERENCE
7474
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:<init> visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:<root>.C
7575
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
7676
BLOCK_BODY
@@ -83,7 +83,7 @@ FILE fqName:<root> fileName:/constructorWithAdaptedArguments.kt
8383
BLOCK_BODY
8484
RETURN type=kotlin.Nothing from='public final fun testInnerClassConstructor (outer: <root>.Outer): kotlin.Any declared in <root>'
8585
CALL 'public final fun use (fn: kotlin.Function1<kotlin.Int, kotlin.Any>): kotlin.Any declared in <root>' type=kotlin.Any origin=null
86-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, <root>.Outer.Inner> origin=LAMBDA
86+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, <root>.Outer.Inner> origin=ADAPTED_FUNCTION_REFERENCE
8787
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:<init> visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:<root>.Outer.Inner
8888
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
8989
BLOCK_BODY
@@ -96,10 +96,10 @@ FILE fqName:<root> fileName:/constructorWithAdaptedArguments.kt
9696
BLOCK_BODY
9797
RETURN type=kotlin.Nothing from='public final fun testInnerClassConstructorCapturingOuter (): kotlin.Any declared in <root>'
9898
CALL 'public final fun use (fn: kotlin.Function1<kotlin.Int, kotlin.Any>): kotlin.Any declared in <root>' type=kotlin.Any origin=null
99-
fn: BLOCK type=kotlin.reflect.KFunction1<kotlin.Int, <root>.Outer.Inner> origin=null
99+
fn: BLOCK type=kotlin.Function1<kotlin.Int, <root>.Outer.Inner> origin=null
100100
VAR IR_TEMPORARY_VARIABLE name:tmp_0 type:<root>.Outer [val]
101101
CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in <root>.Outer' type=<root>.Outer origin=null
102-
FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, <root>.Outer.Inner> origin=LAMBDA
102+
FUN_EXPR type=kotlin.Function1<kotlin.Int, <root>.Outer.Inner> origin=ADAPTED_FUNCTION_REFERENCE
103103
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:<init> visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:<root>.Outer.Inner
104104
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
105105
BLOCK_BODY

compiler/testData/ir/irText/expressions/callableReferences/kt37131.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ FILE fqName:<root> fileName:/kt37131.kt
4949
BLOCK_BODY
5050
RETURN type=kotlin.Nothing from='public final fun testFn (): kotlin.Any declared in <root>'
5151
CALL 'public final fun use (fn: kotlin.Function0<kotlin.Any>): kotlin.Any declared in <root>' type=kotlin.Any origin=null
52-
fn: FUN_EXPR type=kotlin.reflect.KFunction0<kotlin.String> origin=LAMBDA
52+
fn: FUN_EXPR type=kotlin.Function0<kotlin.String> origin=ADAPTED_FUNCTION_REFERENCE
5353
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:foo visibility:local modality:FINAL <> () returnType:kotlin.String
5454
BLOCK_BODY
5555
RETURN type=kotlin.Nothing from='local final fun foo (): kotlin.String declared in <root>.testFn'
@@ -58,7 +58,7 @@ FILE fqName:<root> fileName:/kt37131.kt
5858
BLOCK_BODY
5959
RETURN type=kotlin.Nothing from='public final fun testCtor (): kotlin.Any declared in <root>'
6060
CALL 'public final fun use (fn: kotlin.Function0<kotlin.Any>): kotlin.Any declared in <root>' type=kotlin.Any origin=null
61-
fn: FUN_EXPR type=kotlin.reflect.KFunction0<<root>.C> origin=LAMBDA
61+
fn: FUN_EXPR type=kotlin.Function0<<root>.C> origin=ADAPTED_FUNCTION_REFERENCE
6262
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:<init> visibility:local modality:FINAL <> () returnType:<root>.C
6363
BLOCK_BODY
6464
RETURN type=kotlin.Nothing from='local final fun <init> (): <root>.C declared in <root>.testCtor'

compiler/testData/ir/irText/expressions/callableReferences/unboundMemberReferenceWithAdaptedArguments.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ FILE fqName:<root> fileName:/unboundMemberReferenceWithAdaptedArguments.kt
6060
FUN name:testUnbound visibility:public modality:FINAL <> () returnType:kotlin.Unit
6161
BLOCK_BODY
6262
CALL 'public final fun use1 (fn: kotlin.Function2<<root>.A, kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
63-
fn: FUN_EXPR type=kotlin.reflect.KFunction2<<root>.A, kotlin.Int, kotlin.Unit> origin=LAMBDA
63+
fn: FUN_EXPR type=kotlin.Function2<<root>.A, kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
6464
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:foo visibility:local modality:FINAL <> (p0:<root>.A, p1:kotlin.Int) returnType:kotlin.Unit
6565
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:<root>.A
6666
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p1 index:1 type:kotlin.Int
@@ -74,7 +74,7 @@ FILE fqName:<root> fileName:/unboundMemberReferenceWithAdaptedArguments.kt
7474
VALUE_PARAMETER name:a index:0 type:<root>.A
7575
BLOCK_BODY
7676
CALL 'public final fun use2 (fn: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
77-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
77+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
7878
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:foo visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
7979
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
8080
BLOCK_BODY
@@ -86,7 +86,7 @@ FILE fqName:<root> fileName:/unboundMemberReferenceWithAdaptedArguments.kt
8686
FUN name:testObject visibility:public modality:FINAL <> () returnType:kotlin.Unit
8787
BLOCK_BODY
8888
CALL 'public final fun use2 (fn: kotlin.Function1<kotlin.Int, kotlin.Unit>): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
89-
fn: FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
89+
fn: FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
9090
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:foo visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
9191
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
9292
BLOCK_BODY

compiler/testData/ir/irText/expressions/callableReferences/withAdaptationForSam.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ FILE fqName:<root> fileName:/withAdaptationForSam.kt
2929
BLOCK_BODY
3030
CALL 'public final fun useFoo (foo: <root>.IFoo): kotlin.Unit declared in <root>' type=kotlin.Unit origin=null
3131
foo: TYPE_OP type=<root>.IFoo origin=SAM_CONVERSION typeOperand=<root>.IFoo
32-
FUN_EXPR type=kotlin.reflect.KFunction1<kotlin.Int, kotlin.Unit> origin=LAMBDA
32+
FUN_EXPR type=kotlin.Function1<kotlin.Int, kotlin.Unit> origin=ADAPTED_FUNCTION_REFERENCE
3333
FUN ADAPTER_FOR_CALLABLE_REFERENCE name:withVararg visibility:local modality:FINAL <> (p0:kotlin.Int) returnType:kotlin.Unit
3434
VALUE_PARAMETER ADAPTER_PARAMETER_FOR_CALLABLE_REFERENCE name:p0 index:0 type:kotlin.Int
3535
BLOCK_BODY

0 commit comments

Comments
 (0)