diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt index 85ff5aa6dd1..e8799d745c1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/PostponedArgumentsAnalyzer.kt @@ -138,8 +138,10 @@ class PostponedArgumentsAnalyzer( val checkerSink: CheckerSink = CheckerSinkImpl(components) - val subResolvedKtPrimitives = returnArguments.map { - if (it !is FirExpression) return@map + var hasExpressionInReturnArguments = false + returnArguments.forEach { + if (it !is FirExpression) return@forEach + hasExpressionInReturnArguments = true candidate.resolveArgumentExpression( c.getBuilder(), it, @@ -150,12 +152,9 @@ class PostponedArgumentsAnalyzer( isDispatch = false, isSafeCall = false ) -// resolveKtPrimitive( -// c.getBuilder(), it, lambda.returnType.let(::substitute), diagnosticHolder, isReceiver = false -// ) } - if (returnArguments.isEmpty()) { + if (!hasExpressionInReturnArguments) { val lambdaReturnType = lambda.returnType.let(::substitute) c.getBuilder().addSubtypeConstraint( lambdaReturnType, diff --git a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.dot b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.dot index 8159e51f055..85360b862b7 100644 --- a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.dot +++ b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.dot @@ -16,11 +16,10 @@ digraph callsInPlace_kt { 6 [label="Exit function anonymousFunction"]; } 7 [label="Postponed exit from lambda"]; - 8 [label="Function call: R|kotlin/run|( = run@fun (): R|kotlin/Nothing| )"]; - 9 [label="Stub" style="filled" fillcolor=gray]; - 10 [label="Access variable R|/x|" style="filled" fillcolor=gray]; - 11 [label="Function call: R|/x|.R|kotlin/Int.inc|()" style="filled" fillcolor=gray]; - 12 [label="Exit function test" style="filled" fillcolor=red]; + 8 [label="Function call: R|kotlin/run|( = run@fun (): R|kotlin/Unit| )"]; + 9 [label="Access variable R|/x|"]; + 10 [label="Function call: R|/x|.R|kotlin/Int.inc|()"]; + 11 [label="Exit function test" style="filled" fillcolor=red]; } 0 -> {1}; @@ -32,258 +31,256 @@ digraph callsInPlace_kt { 5 -> {6}; 6 -> {7} [color=green]; 7 -> {8}; - 8 -> {12}; - 8 -> {9} [style=dotted]; - 9 -> {10} [style=dotted]; - 10 -> {11} [style=dotted]; - 11 -> {12} [style=dotted]; + 8 -> {9}; + 9 -> {10}; + 10 -> {11}; subgraph cluster_2 { color=red - 13 [label="Enter function test_2" style="filled" fillcolor=red]; - 14 [label="Const: Int(10)"]; - 15 [label="Postponed enter to lambda"]; + 12 [label="Enter function test_2" style="filled" fillcolor=red]; + 13 [label="Const: Int(10)"]; + 14 [label="Postponed enter to lambda"]; subgraph cluster_3 { color=blue - 16 [label="Enter function anonymousFunction"]; - 17 [label="Const: String(test_2)"]; - 18 [label="Exit function anonymousFunction"]; + 15 [label="Enter function anonymousFunction"]; + 16 [label="Const: String(test_2)"]; + 17 [label="Exit function anonymousFunction"]; } - 19 [label="Postponed exit from lambda"]; - 20 [label="Function call: R|kotlin/repeat|(Int(10), = repeat@fun (it: R|kotlin/Int|): R|kotlin/Unit| )"]; - 21 [label="Exit function test_2" style="filled" fillcolor=red]; + 18 [label="Postponed exit from lambda"]; + 19 [label="Function call: R|kotlin/repeat|(Int(10), = repeat@fun (it: R|kotlin/Int|): R|kotlin/Unit| )"]; + 20 [label="Exit function test_2" style="filled" fillcolor=red]; } + 12 -> {13}; 13 -> {14}; 14 -> {15}; - 15 -> {16}; - 15 -> {19} [color=red]; - 16 -> {18 17}; - 17 -> {18}; - 18 -> {16}; - 18 -> {19} [color=green]; + 14 -> {18} [color=red]; + 15 -> {17 16}; + 16 -> {17}; + 17 -> {15}; + 17 -> {18} [color=green]; + 18 -> {19}; 19 -> {20}; - 20 -> {21}; subgraph cluster_4 { color=red - 22 [label="Enter function test_3" style="filled" fillcolor=red]; - 23 [label="Postponed enter to lambda"]; + 21 [label="Enter function test_3" style="filled" fillcolor=red]; + 22 [label="Postponed enter to lambda"]; subgraph cluster_5 { color=blue - 24 [label="Enter function anonymousFunction"]; - 25 [label="Const: String(test_3)"]; - 26 [label="Exit function anonymousFunction"]; + 23 [label="Enter function anonymousFunction"]; + 24 [label="Const: String(test_3)"]; + 25 [label="Exit function anonymousFunction"]; } - 27 [label="Postponed exit from lambda"]; - 28 [label="Const: Int(10)"]; - 29 [label="Function call: R|kotlin/repeat|(action = repeat@fun (it: R|kotlin/Int|): R|kotlin/Unit| , times = Int(10))"]; - 30 [label="Exit function test_3" style="filled" fillcolor=red]; + 26 [label="Postponed exit from lambda"]; + 27 [label="Const: Int(10)"]; + 28 [label="Function call: R|kotlin/repeat|(action = repeat@fun (it: R|kotlin/Int|): R|kotlin/Unit| , times = Int(10))"]; + 29 [label="Exit function test_3" style="filled" fillcolor=red]; } + 21 -> {22}; 22 -> {23}; - 23 -> {24}; - 23 -> {27} [color=red]; - 24 -> {26 25}; - 25 -> {26}; - 26 -> {24}; - 26 -> {27} [color=green]; + 22 -> {26} [color=red]; + 23 -> {25 24}; + 24 -> {25}; + 25 -> {23}; + 25 -> {26} [color=green]; + 26 -> {27}; 27 -> {28}; 28 -> {29}; - 29 -> {30}; subgraph cluster_6 { color=red - 31 [label="Enter function test_4" style="filled" fillcolor=red]; - 32 [label="Const: Int(1)"]; - 33 [label="Postponed enter to lambda"]; + 30 [label="Enter function test_4" style="filled" fillcolor=red]; + 31 [label="Const: Int(1)"]; + 32 [label="Postponed enter to lambda"]; subgraph cluster_7 { color=blue - 34 [label="Enter function anonymousFunction"]; - 35 [label="Const: String(test_4)"]; - 36 [label="Access variable R|/it|"]; - 37 [label="Const: Int(0)"]; - 38 [label="Function call: R|/it|.R|kotlin/Int.compareTo|(Int(0))"]; - 39 [label="Comparison >"]; - 40 [label="Exit function anonymousFunction"]; + 33 [label="Enter function anonymousFunction"]; + 34 [label="Const: String(test_4)"]; + 35 [label="Access variable R|/it|"]; + 36 [label="Const: Int(0)"]; + 37 [label="Function call: R|/it|.R|kotlin/Int.compareTo|(Int(0))"]; + 38 [label="Comparison >"]; + 39 [label="Exit function anonymousFunction"]; } - 41 [label="Postponed exit from lambda"]; - 42 [label="Function call: Int(1).R|kotlin/takeUnless|( = takeUnless@fun (it: R|kotlin/Int|): R|kotlin/Boolean| )"]; - 43 [label="Exit function test_4" style="filled" fillcolor=red]; + 40 [label="Postponed exit from lambda"]; + 41 [label="Function call: Int(1).R|kotlin/takeUnless|( = takeUnless@fun (it: R|kotlin/Int|): R|kotlin/Boolean| )"]; + 42 [label="Exit function test_4" style="filled" fillcolor=red]; } + 30 -> {31}; 31 -> {32}; 32 -> {33}; + 32 -> {40} [color=red]; 33 -> {34}; - 33 -> {41} [color=red]; 34 -> {35}; 35 -> {36}; 36 -> {37}; 37 -> {38}; 38 -> {39}; - 39 -> {40}; - 40 -> {41} [color=green]; + 39 -> {40} [color=green]; + 40 -> {41}; 41 -> {42}; - 42 -> {43}; subgraph cluster_8 { color=red - 44 [label="Enter function test_5" style="filled" fillcolor=red]; - 45 [label="Const: Int(1)"]; - 46 [label="Postponed enter to lambda"]; + 43 [label="Enter function test_5" style="filled" fillcolor=red]; + 44 [label="Const: Int(1)"]; + 45 [label="Postponed enter to lambda"]; subgraph cluster_9 { color=blue - 47 [label="Enter function anonymousFunction"]; - 48 [label="Const: String(test_5)"]; - 49 [label="Access variable R|/it|"]; - 50 [label="Const: Int(0)"]; - 51 [label="Function call: R|/it|.R|kotlin/Int.compareTo|(Int(0))"]; - 52 [label="Comparison >"]; - 53 [label="Exit function anonymousFunction"]; + 46 [label="Enter function anonymousFunction"]; + 47 [label="Const: String(test_5)"]; + 48 [label="Access variable R|/it|"]; + 49 [label="Const: Int(0)"]; + 50 [label="Function call: R|/it|.R|kotlin/Int.compareTo|(Int(0))"]; + 51 [label="Comparison >"]; + 52 [label="Exit function anonymousFunction"]; } - 54 [label="Postponed exit from lambda"]; - 55 [label="Function call: Int(1).R|kotlin/takeUnless|(predicate = takeUnless@fun (it: R|kotlin/Int|): R|kotlin/Boolean| )"]; - 56 [label="Exit function test_5" style="filled" fillcolor=red]; + 53 [label="Postponed exit from lambda"]; + 54 [label="Function call: Int(1).R|kotlin/takeUnless|(predicate = takeUnless@fun (it: R|kotlin/Int|): R|kotlin/Boolean| )"]; + 55 [label="Exit function test_5" style="filled" fillcolor=red]; } + 43 -> {44}; 44 -> {45}; 45 -> {46}; + 45 -> {53} [color=red]; 46 -> {47}; - 46 -> {54} [color=red]; 47 -> {48}; 48 -> {49}; 49 -> {50}; 50 -> {51}; 51 -> {52}; - 52 -> {53}; - 53 -> {54} [color=green]; + 52 -> {53} [color=green]; + 53 -> {54}; 54 -> {55}; - 55 -> {56}; subgraph cluster_10 { color=red - 57 [label="Enter function myRun" style="filled" fillcolor=red]; - 58 [label="Function call: R|/block1|.R|FakeOverride|()"]; - 59 [label="Function call: R|/block2|.R|FakeOverride|()"]; - 60 [label="Exit function myRun" style="filled" fillcolor=red]; + 56 [label="Enter function myRun" style="filled" fillcolor=red]; + 57 [label="Function call: R|/block1|.R|FakeOverride|()"]; + 58 [label="Function call: R|/block2|.R|FakeOverride|()"]; + 59 [label="Exit function myRun" style="filled" fillcolor=red]; } + 56 -> {57}; 57 -> {58}; 58 -> {59}; - 59 -> {60}; subgraph cluster_11 { color=red - 61 [label="Enter function test_6" style="filled" fillcolor=red]; - 62 [label="Postponed enter to lambda"]; + 60 [label="Enter function test_6" style="filled" fillcolor=red]; + 61 [label="Postponed enter to lambda"]; subgraph cluster_12 { color=blue - 63 [label="Enter function anonymousFunction"]; - 64 [label="Const: String(test_6_1)"]; - 65 [label="Exit function anonymousFunction"]; + 62 [label="Enter function anonymousFunction"]; + 63 [label="Const: String(test_6_1)"]; + 64 [label="Exit function anonymousFunction"]; } - 66 [label="Postponed exit from lambda"]; - 67 [label="Postponed enter to lambda"]; + 65 [label="Postponed exit from lambda"]; + 66 [label="Postponed enter to lambda"]; subgraph cluster_13 { color=blue - 68 [label="Enter function anonymousFunction"]; - 69 [label="Const: String(test_6_2)"]; - 70 [label="Exit function anonymousFunction"]; + 67 [label="Enter function anonymousFunction"]; + 68 [label="Const: String(test_6_2)"]; + 69 [label="Exit function anonymousFunction"]; } - 71 [label="Postponed exit from lambda"]; - 72 [label="Function call: R|/myRun|(myRun@fun (): R|kotlin/Unit| , = myRun@fun (): R|kotlin/Unit| )"]; - 73 [label="Exit function test_6" style="filled" fillcolor=red]; + 70 [label="Postponed exit from lambda"]; + 71 [label="Function call: R|/myRun|(myRun@fun (): R|kotlin/Unit| , = myRun@fun (): R|kotlin/Unit| )"]; + 72 [label="Exit function test_6" style="filled" fillcolor=red]; } + 60 -> {61}; 61 -> {62}; - 62 -> {63}; - 62 -> {66} [color=red]; - 63 -> {65 64}; - 64 -> {65}; - 65 -> {63}; - 65 -> {66} [color=green]; + 61 -> {65} [color=red]; + 62 -> {64 63}; + 63 -> {64}; + 64 -> {62}; + 64 -> {65} [color=green]; + 65 -> {66}; 66 -> {67}; - 67 -> {68}; - 67 -> {71} [color=red]; - 68 -> {70 69}; - 69 -> {70}; - 70 -> {68}; - 70 -> {71} [color=green]; + 66 -> {70} [color=red]; + 67 -> {69 68}; + 68 -> {69}; + 69 -> {67}; + 69 -> {70} [color=green]; + 70 -> {71}; 71 -> {72}; - 72 -> {73}; subgraph cluster_14 { color=red - 74 [label="Enter function test_7" style="filled" fillcolor=red]; - 75 [label="Postponed enter to lambda"]; + 73 [label="Enter function test_7" style="filled" fillcolor=red]; + 74 [label="Postponed enter to lambda"]; subgraph cluster_15 { color=blue - 76 [label="Enter function anonymousFunction"]; - 77 [label="Const: String(test_7_2)"]; - 78 [label="Exit function anonymousFunction"]; + 75 [label="Enter function anonymousFunction"]; + 76 [label="Const: String(test_7_2)"]; + 77 [label="Exit function anonymousFunction"]; } - 79 [label="Postponed exit from lambda"]; - 80 [label="Postponed enter to lambda"]; + 78 [label="Postponed exit from lambda"]; + 79 [label="Postponed enter to lambda"]; subgraph cluster_16 { color=blue - 81 [label="Enter function anonymousFunction"]; - 82 [label="Const: String(test_7_1)"]; - 83 [label="Exit function anonymousFunction"]; + 80 [label="Enter function anonymousFunction"]; + 81 [label="Const: String(test_7_1)"]; + 82 [label="Exit function anonymousFunction"]; } - 84 [label="Postponed exit from lambda"]; - 85 [label="Function call: R|/myRun|(block2 = myRun@fun (): R|kotlin/Unit| , block1 = myRun@fun (): R|kotlin/Unit| )"]; - 86 [label="Exit function test_7" style="filled" fillcolor=red]; + 83 [label="Postponed exit from lambda"]; + 84 [label="Function call: R|/myRun|(block2 = myRun@fun (): R|kotlin/Unit| , block1 = myRun@fun (): R|kotlin/Unit| )"]; + 85 [label="Exit function test_7" style="filled" fillcolor=red]; } + 73 -> {74}; 74 -> {75}; - 75 -> {76}; - 75 -> {79} [color=red]; - 76 -> {78 77}; - 77 -> {78}; - 78 -> {76}; - 78 -> {79} [color=green]; + 74 -> {78} [color=red]; + 75 -> {77 76}; + 76 -> {77}; + 77 -> {75}; + 77 -> {78} [color=green]; + 78 -> {79}; 79 -> {80}; - 80 -> {81}; - 80 -> {84} [color=red]; - 81 -> {83 82}; - 82 -> {83}; - 83 -> {81}; - 83 -> {84} [color=green]; + 79 -> {83} [color=red]; + 80 -> {82 81}; + 81 -> {82}; + 82 -> {80}; + 82 -> {83} [color=green]; + 83 -> {84}; 84 -> {85}; - 85 -> {86}; subgraph cluster_17 { color=red - 87 [label="Enter function myDummyRun" style="filled" fillcolor=red]; - 88 [label="Function call: R|/block|.R|FakeOverride|()"]; - 89 [label="Exit function myDummyRun" style="filled" fillcolor=red]; + 86 [label="Enter function myDummyRun" style="filled" fillcolor=red]; + 87 [label="Function call: R|/block|.R|FakeOverride|()"]; + 88 [label="Exit function myDummyRun" style="filled" fillcolor=red]; } + 86 -> {87}; 87 -> {88}; - 88 -> {89}; subgraph cluster_18 { color=red - 90 [label="Enter function test_8" style="filled" fillcolor=red]; - 91 [label="Postponed enter to lambda"]; - 92 [label="Postponed exit from lambda"]; - 93 [label="Function call: R|/myDummyRun|( = myDummyRun@fun (): R|kotlin/Unit|)"]; - 94 [label="Exit function test_8" style="filled" fillcolor=red]; + 89 [label="Enter function test_8" style="filled" fillcolor=red]; + 90 [label="Postponed enter to lambda"]; + 91 [label="Postponed exit from lambda"]; + 92 [label="Function call: R|/myDummyRun|( = myDummyRun@fun (): R|kotlin/Unit|)"]; + 93 [label="Exit function test_8" style="filled" fillcolor=red]; } - 90 -> {91}; - 91 -> {92 92} [color=green]; + 89 -> {90}; + 90 -> {91 91} [color=green]; + 91 -> {92}; 92 -> {93}; - 93 -> {94}; subgraph cluster_19 { color=red - 95 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; - 96 [label="Const: String(test_8)"]; - 97 [label="Exit function anonymousFunction" style="filled" fillcolor=red]; + 94 [label="Enter function anonymousFunction" style="filled" fillcolor=red]; + 95 [label="Const: String(test_8)"]; + 96 [label="Exit function anonymousFunction" style="filled" fillcolor=red]; } + 94 -> {95}; 95 -> {96}; - 96 -> {97}; } diff --git a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.txt b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.txt index cdc7da0dd9a..15ca59afa42 100644 --- a/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.txt +++ b/compiler/fir/resolve/testData/resolveWithStdlib/contracts/callsInPlace.txt @@ -1,7 +1,7 @@ FILE: callsInPlace.kt public final fun test(): R|kotlin/Unit| { lval x: R|kotlin/Int| - R|kotlin/run|( = run@fun (): R|kotlin/Nothing| { + R|kotlin/run|( = run@fun (): R|kotlin/Unit| { R|/x| = Int(1) } ) diff --git a/compiler/fir/resolve/testData/resolveWithStdlib/runOnIntegerLiteral.txt b/compiler/fir/resolve/testData/resolveWithStdlib/runOnIntegerLiteral.txt index f3f4f8c9826..e670a2c388a 100644 --- a/compiler/fir/resolve/testData/resolveWithStdlib/runOnIntegerLiteral.txt +++ b/compiler/fir/resolve/testData/resolveWithStdlib/runOnIntegerLiteral.txt @@ -8,7 +8,7 @@ FILE: runOnIntegerLiteral.kt public get(): R|kotlin/Int| init { - Int(1).R|kotlin/run|( = run@fun R|kotlin/Int|.(): R|kotlin/Nothing| { + Int(1).R|kotlin/run|( = run@fun R|kotlin/Int|.(): R|kotlin/Unit| { this@R|/TestInitValInLambdaCalledOnce|.R|/TestInitValInLambdaCalledOnce.x| = Int(0) } ) diff --git a/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyAssign.kt b/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyAssign.kt index 216a92b0ea1..5faf6875838 100644 --- a/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyAssign.kt +++ b/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyAssign.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME fun box(): String { diff --git a/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyCAO.kt b/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyCAO.kt index eeecafca219..0f62af3ed4d 100644 --- a/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyCAO.kt +++ b/compiler/testData/codegen/box/closures/capturedVarsOptimization/capturedInInlineOnlyCAO.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // WITH_RUNTIME fun box(): String { diff --git a/compiler/testData/codegen/box/properties/lateinit/local/localLateinit.kt b/compiler/testData/codegen/box/properties/lateinit/local/localLateinit.kt index b30d2416246..619cd6d90de 100644 --- a/compiler/testData/codegen/box/properties/lateinit/local/localLateinit.kt +++ b/compiler/testData/codegen/box/properties/lateinit/local/localLateinit.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR fun box(): String { lateinit var ok: String run { diff --git a/compiler/testData/codegen/box/properties/lateinit/topLevel/topLevelLateinit.kt b/compiler/testData/codegen/box/properties/lateinit/topLevel/topLevelLateinit.kt index c2cb9fb01f5..23d1104aeba 100644 --- a/compiler/testData/codegen/box/properties/lateinit/topLevel/topLevelLateinit.kt +++ b/compiler/testData/codegen/box/properties/lateinit/topLevel/topLevelLateinit.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR lateinit var ok: String fun box(): String { diff --git a/compiler/testData/codegen/box/synchronized/changeMonitor.kt b/compiler/testData/codegen/box/synchronized/changeMonitor.kt index 6b3600f3c94..5c2bab2c36b 100644 --- a/compiler/testData/codegen/box/synchronized/changeMonitor.kt +++ b/compiler/testData/codegen/box/synchronized/changeMonitor.kt @@ -1,4 +1,3 @@ -// IGNORE_BACKEND_FIR: JVM_IR // TARGET_BACKEND: JVM // WITH_RUNTIME diff --git a/compiler/testData/ir/irText/classes/initValInLambda.fir.txt b/compiler/testData/ir/irText/classes/initValInLambda.fir.txt index 252a279c932..aac71f3e9c9 100644 --- a/compiler/testData/ir/irText/classes/initValInLambda.fir.txt +++ b/compiler/testData/ir/irText/classes/initValInLambda.fir.txt @@ -16,12 +16,12 @@ FILE fqName: fileName:/initValInLambda.kt receiver: GET_VAR ': .TestInitValInLambdaCalledOnce declared in .TestInitValInLambdaCalledOnce.' type=.TestInitValInLambdaCalledOnce origin=null ANONYMOUS_INITIALIZER isStatic=false BLOCK_BODY - CALL 'public final fun run (block: kotlin.Function1): R of kotlin.run [inline] declared in kotlin' type=kotlin.Nothing origin=null + CALL 'public final fun run (block: kotlin.Function1): R of kotlin.run [inline] declared in kotlin' type=kotlin.Unit origin=null : kotlin.Int - : kotlin.Nothing + : kotlin.Unit $receiver: CONST Int type=kotlin.Int value=1 - block: FUN_EXPR type=kotlin.Function1 origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:kotlin.Int) returnType:kotlin.Nothing + block: FUN_EXPR type=kotlin.Function1 origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:kotlin.Int) returnType:kotlin.Unit $receiver: VALUE_PARAMETER name: type:kotlin.Int BLOCK_BODY SET_FIELD 'FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:private [final]' type=kotlin.Unit origin=null