From 5836a8aa0b1fd0ad599ce1a8db0b5cb450f435ab Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 25 Jul 2023 16:13:49 +0200 Subject: [PATCH] K2: add more tests/fix augmented assignment case around KT-59748 --- ...ompoundAssignWithArrayAccessConvention.txt | 1 + ...undAssignWithArrayAccessConvention_lhs.txt | 1 + ...thArrayAccessConvention_propertyAccess.txt | 1 + .../compoundAssignWithArrayGetConvention.txt | 1 + ...mpoundAssignWithArrayGetConvention_lhs.txt | 1 + .../arrays/arraySetWithOperation.fir.txt | 4 ++ .../arraySetWithPlusAssign.fir.txt | 17 ++++++- .../exponentialArraySetWithPlusAssign.fir.txt | 30 +++++++++++++ .../safeCallsWithAugmentedAssignment.txt | 6 +++ .../fir/builder/AbstractRawFirBuilder.kt | 41 +++++++++-------- .../org/jetbrains/kotlin/KtSourceElement.kt | 2 +- .../listAssignmentInWhen.fir.kt | 17 +++++++ .../listAssignmentInWhen.fir.txt | 45 +++++++++++++++++++ .../testsWithStdLib/listAssignmentInWhen.kt | 17 +++++++ .../caoWithAdaptationForSam.fir.ir.txt | 27 +++++------ .../caoWithAdaptationForSam.fir.kt.txt | 8 ++-- 16 files changed, 182 insertions(+), 37 deletions(-) diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention.txt index 255c3c9bc55..f5835ec70d6 100644 --- a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention.txt +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention.txt @@ -20,4 +20,5 @@ FILE: [ResolvedTo(IMPORTS)] compoundAssignWithArrayAccessConvention.kt R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|kotlin/Int.plus|(Int(1))) } + Unit } diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_lhs.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_lhs.txt index be53dcfcd17..b9f9942cd56 100644 --- a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_lhs.txt +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_lhs.txt @@ -20,4 +20,5 @@ FILE: [ResolvedTo(IMPORTS)] compoundAssignWithArrayAccessConvention_lhs.kt R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|kotlin/Int.plus|(Int(1))) } + Unit } diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_propertyAccess.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_propertyAccess.txt index 3299307a3bc..0d19f784c18 100644 --- a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_propertyAccess.txt +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayAccessConvention_propertyAccess.txt @@ -20,4 +20,5 @@ FILE: [ResolvedTo(IMPORTS)] compoundAssignWithArrayAccessConvention_propertyAcce R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|kotlin/Int.plus|(Int(1))) } + Unit } diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention.txt index 1d05dffb353..4e80dda0a20 100644 --- a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention.txt +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention.txt @@ -17,4 +17,5 @@ FILE: [ResolvedTo(IMPORTS)] compoundAssignWithArrayGetConvention.kt } public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] m: R|MyMap|): R|kotlin/Unit| { R|/m|.R|SubstitutionOverride|(String(a)).R|/A.plusAssign|(Int(1)) + Unit } diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention_lhs.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention_lhs.txt index 0772bc5219f..7a990780614 100644 --- a/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention_lhs.txt +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/calls/compoundAssignWithArrayGetConvention_lhs.txt @@ -17,4 +17,5 @@ FILE: [ResolvedTo(IMPORTS)] compoundAssignWithArrayGetConvention_lhs.kt } public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] m: R|MyMap|): R|kotlin/Unit| { R|/m|.R|SubstitutionOverride|(String(a)).R|/A.plusAssign|(Int(1)) + Unit } diff --git a/compiler/fir/analysis-tests/testData/resolve/arrays/arraySetWithOperation.fir.txt b/compiler/fir/analysis-tests/testData/resolve/arrays/arraySetWithOperation.fir.txt index 0dac396614f..d99537cffa7 100644 --- a/compiler/fir/analysis-tests/testData/resolve/arrays/arraySetWithOperation.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/arrays/arraySetWithOperation.fir.txt @@ -46,6 +46,7 @@ FILE: arraySetWithOperation.kt } public final fun test_1(a: R|A|): R|kotlin/Unit| { R|/a|.R|SubstitutionOverride|(Int(0)).R|/B.plusAssign|(R|/B.B|()) + Unit } public final fun test_2(a: R|A|): R|kotlin/Unit| { { @@ -54,10 +55,13 @@ FILE: arraySetWithOperation.kt R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|/C.plus|(R|/C.C|())) } + Unit } public final fun test_3(a: R|A|): R|kotlin/Unit| { R|/a|.R|SubstitutionOverride|(Int(0)).#(R|/D.D|()) + Unit } public final fun test_4(b: R|B|): R|kotlin/Unit| { R|/b|.#(Int(0)).#(R|/B.B|()) + Unit } diff --git a/compiler/fir/analysis-tests/testData/resolve/callResolution/arraySetWithPlusAssign.fir.txt b/compiler/fir/analysis-tests/testData/resolve/callResolution/arraySetWithPlusAssign.fir.txt index d4783ae2e20..1443a8a151d 100644 --- a/compiler/fir/analysis-tests/testData/resolve/callResolution/arraySetWithPlusAssign.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/callResolution/arraySetWithPlusAssign.fir.txt @@ -20,8 +20,10 @@ FILE: arraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } public final class B : R|kotlin/Any| { public constructor(): R|B| { @@ -47,8 +49,10 @@ FILE: arraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } public final class C : R|kotlin/Any| { public constructor(): R|C| { @@ -77,8 +81,10 @@ FILE: arraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } public final class D : R|kotlin/Any| { public constructor(): R|D| { @@ -108,8 +114,10 @@ FILE: arraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } public final class E : R|kotlin/Any| { public constructor(): R|E| { @@ -118,15 +126,17 @@ FILE: arraySetWithPlusAssign.kt } public final fun test_5(x: R|E|): R|kotlin/Unit| { - R|/x|.#(Int(1)).#(fun (): { + R|/x|.#(Int(1)).#(fun (): R|kotlin/Unit| { R|/someCallInsideLambda|() - ^ R|/x|.#(Int(1)).#(fun (): R|kotlin/Unit| { + R|/x|.#(Int(1)).#(fun (): R|kotlin/Unit| { R|/someCallInsideLambda|() Q|kotlin/Unit| } ) + Unit } ) + Unit } public final class F : R|kotlin/Any| { public constructor(): R|F| { @@ -154,6 +164,7 @@ FILE: arraySetWithPlusAssign.kt ^ String(please choose String) } ) + Unit } public final class G : R|kotlin/Any| { public constructor(): R|G| { @@ -192,10 +203,12 @@ FILE: arraySetWithPlusAssign.kt )) } + Unit } )) } + Unit } public final fun someCallInsideLambda(): R|kotlin/Unit| { } diff --git a/compiler/fir/analysis-tests/testData/resolve/callResolution/exponentialArraySetWithPlusAssign.fir.txt b/compiler/fir/analysis-tests/testData/resolve/callResolution/exponentialArraySetWithPlusAssign.fir.txt index 3e1655f4dcd..7cfbdcc0571 100644 --- a/compiler/fir/analysis-tests/testData/resolve/callResolution/exponentialArraySetWithPlusAssign.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/callResolution/exponentialArraySetWithPlusAssign.fir.txt @@ -46,34 +46,49 @@ FILE: exponentialArraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } public final class D : R|kotlin/Any| { public constructor(): R|D| { @@ -129,34 +144,49 @@ FILE: exponentialArraySetWithPlusAssign.kt Q|kotlin/Unit| } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } ) + Unit } public final fun someCallInsideLambda(): R|kotlin/Unit| { } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions/safeCallsWithAugmentedAssignment.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions/safeCallsWithAugmentedAssignment.txt index cb67494976e..962956642cd 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions/safeCallsWithAugmentedAssignment.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/expressions/safeCallsWithAugmentedAssignment.txt @@ -4,10 +4,16 @@ FILE: safeCallsWithAugmentedAssignment.kt a#?.{ $subj$.b# }?.{ +=($subj$.c#, IntegerLiteral(1)) } +=(a#?.{ $subj$.b# }.c#, IntegerLiteral(1)) a#?.{ ArraySet:[$subj$.b#.get#(IntegerLiteral(0)) += IntegerLiteral(1)] } + Unit a#?.{ $subj$.b# }?.{ ArraySet:[$subj$.c#.get#(IntegerLiteral(0)) += IntegerLiteral(1)] } + Unit ArraySet:[a#?.{ $subj$.b# }.c#.get#(IntegerLiteral(0)) += IntegerLiteral(1)] + Unit a#?.{ ArraySet:[$subj$.b#.get#(IntegerLiteral(0)).get#(IntegerLiteral(0)) += IntegerLiteral(1)] } + Unit a#?.{ $subj$.b# }?.{ ArraySet:[$subj$.c#.get#(IntegerLiteral(0)).get#(IntegerLiteral(0)) += IntegerLiteral(1)] } + Unit ArraySet:[a#?.{ $subj$.b# }.c#.get#(IntegerLiteral(0)).get#(IntegerLiteral(0)) += IntegerLiteral(1)] + Unit +=(a#?.{ $subj$.b# }.d#(), IntegerLiteral(1)) } diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt index 4a20cdbbd66..84a5d79e8d4 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/AbstractRawFirBuilder.kt @@ -746,28 +746,33 @@ abstract class AbstractRawFirBuilder(val baseSession: FirSession, val context if (operation == FirOperation.ASSIGN) { context.arraySetArgument[unwrappedLhs] = rhsExpression } - return if (operation == FirOperation.ASSIGN) { - val result = unwrappedLhs.convert() - result.replaceAnnotations(result.annotations.smartPlus(annotations)) - buildBlock { + return buildBlock { + if (operation == FirOperation.ASSIGN) { + val result = unwrappedLhs.convert() + result.replaceAnnotations(result.annotations.smartPlus(annotations)) source = result.source statements += result.pullUpSafeCallIfNecessary() - statements += buildUnitExpression { - source = result.source?.fakeElement(KtFakeSourceElementKind.ImplicitUnit.IndexedAssignmentCoercion) + } else { + val receiver = unwrappedLhs.convert() + + if (receiver is FirSafeCallExpression) { + receiver.replaceSelector( + generateAugmentedArraySetCall( + receiver.selector as FirExpression, baseSource, arrayAccessSource, operation, annotations, rhsAST, convert + ) + ) + source = receiver.source + statements += receiver + } else { + val augmentedArraySetCall = generateAugmentedArraySetCall( + receiver, baseSource, arrayAccessSource, operation, annotations, rhsAST, convert + ) + source = augmentedArraySetCall.source + statements += augmentedArraySetCall } } - } else { - val receiver = unwrappedLhs.convert() - - if (receiver is FirSafeCallExpression) { - receiver.replaceSelector( - generateAugmentedArraySetCall( - receiver.selector as FirExpression, baseSource, arrayAccessSource, operation, annotations, rhsAST, convert - ) - ) - receiver - } else { - generateAugmentedArraySetCall(receiver, baseSource, arrayAccessSource, operation, annotations, rhsAST, convert) + statements += buildUnitExpression { + source = this@buildBlock.source?.fakeElement(KtFakeSourceElementKind.ImplicitUnit.IndexedAssignmentCoercion) } } } diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt index bed25c4d591..d4a88d45ff0 100644 --- a/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/KtSourceElement.kt @@ -95,7 +95,7 @@ sealed class KtFakeSourceElementKind(final override val shouldSkipErrorTypeRepor // fake source refers to the return statement object Return : ImplicitUnit() - // this source is used for 'a[i] = b' converted to { a[i] = b; Unit } + // this source is used for 'a[i] = b' or 'a[i] += b' converted to { a[i] = b; Unit } // fake source refers to the assignment statement object IndexedAssignmentCoercion : ImplicitUnit() } diff --git a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.kt index 464e0350454..f7cfa46f0f7 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.kt @@ -10,3 +10,20 @@ fun bar(list: MutableList, condition: Boolean): Unit = list.set(0, "") else -> Unit } + +fun plusFoo(list: MutableList, condition: Boolean): Unit = when { + condition -> list[0] += "" + else -> Unit +} + +var x: String = "" + +fun assign(condition: Boolean): Unit = when { + condition -> x = "" + else -> Unit +} + +fun plugAssign(condition: Boolean): Unit = when { + condition -> x += "" + else -> Unit +} diff --git a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.txt index fce42a5e208..1c5519155e8 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.fir.txt @@ -25,3 +25,48 @@ FILE: listAssignmentInWhen.fir.kt } } + public final fun plusFoo(list: R|kotlin/collections/MutableList|, condition: R|kotlin/Boolean|): R|kotlin/Unit| { + ^plusFoo when () { + R|/condition| -> { + { + { + lval : R|kotlin/collections/MutableList| = R|/list| + lval : R|kotlin/Int| = Int(0) + R|/|.R|SubstitutionOverride|(R|/|, R|/|.R|SubstitutionOverride|(R|/|).R|kotlin/String.plus|(String())) + } + + Unit + } + + } + else -> { + Q|kotlin/Unit| + } + } + + } + public final var x: R|kotlin/String| = String() + public get(): R|kotlin/String| + public set(value: R|kotlin/String|): R|kotlin/Unit| + public final fun assign(condition: R|kotlin/Boolean|): R|kotlin/Unit| { + ^assign when () { + R|/condition| -> { + R|/x| = String() + } + else -> { + Q|kotlin/Unit| + } + } + + } + public final fun plugAssign(condition: R|kotlin/Boolean|): R|kotlin/Unit| { + ^plugAssign when () { + R|/condition| -> { + R|/x| = R|/x|.R|kotlin/String.plus|(String()) + } + else -> { + Q|kotlin/Unit| + } + } + + } diff --git a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.kt b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.kt index ab449e1e166..de90ce11424 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/listAssignmentInWhen.kt @@ -10,3 +10,20 @@ fun bar(list: MutableList, condition: Boolean): Unit = wh condition -> list.set(0, "") else -> Unit } + +fun plusFoo(list: MutableList, condition: Boolean): Unit = when { + condition -> list[0] += "" + else -> Unit +} + +var x: String = "" + +fun assign(condition: Boolean): Unit = when { + condition -> x = "" + else -> Unit +} + +fun plugAssign(condition: Boolean): Unit = when { + condition -> x += "" + else -> Unit +} diff --git a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.ir.txt b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.ir.txt index 746e9e247e1..ef571395c1d 100644 --- a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.ir.txt +++ b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.ir.txt @@ -174,19 +174,20 @@ FILE fqName: fileName:/caoWithAdaptationForSam.kt if: TYPE_OP type=kotlin.Boolean origin=INSTANCEOF typeOperand=.IFoo GET_VAR 'fn: kotlin.Function1 declared in .test4' type=kotlin.Function1 origin=null then: BLOCK type=kotlin.Unit origin=null - VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:.A [val] - GET_OBJECT 'CLASS OBJECT name:A modality:FINAL visibility:public superTypes:[kotlin.Any]' type=.A - VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:.IFoo [val] - TYPE_OP type=.IFoo origin=IMPLICIT_CAST typeOperand=.IFoo - GET_VAR 'fn: kotlin.Function1 declared in .test4' type=kotlin.Function1 origin=null - CALL 'public final fun set (i: .IFoo, newValue: kotlin.Int): kotlin.Unit declared in ' type=kotlin.Unit origin=null - $receiver: GET_VAR 'val tmp_6: .A declared in .test4' type=.A origin=null - i: GET_VAR 'val tmp_7: .IFoo declared in .test4' type=.IFoo origin=null - newValue: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null - $this: CALL 'public final fun get (i: .IFoo): kotlin.Int declared in ' type=kotlin.Int origin=null - $receiver: GET_VAR 'val tmp_6: .A declared in .test4' type=.A origin=null - i: GET_VAR 'val tmp_7: .IFoo declared in .test4' type=.IFoo origin=null - other: CONST Int type=kotlin.Int value=1 + BLOCK type=kotlin.Unit origin=null + VAR IR_TEMPORARY_VARIABLE name:tmp_6 type:.A [val] + GET_OBJECT 'CLASS OBJECT name:A modality:FINAL visibility:public superTypes:[kotlin.Any]' type=.A + VAR IR_TEMPORARY_VARIABLE name:tmp_7 type:.IFoo [val] + TYPE_OP type=.IFoo origin=IMPLICIT_CAST typeOperand=.IFoo + GET_VAR 'fn: kotlin.Function1 declared in .test4' type=kotlin.Function1 origin=null + CALL 'public final fun set (i: .IFoo, newValue: kotlin.Int): kotlin.Unit declared in ' type=kotlin.Unit origin=null + $receiver: GET_VAR 'val tmp_6: .A declared in .test4' type=.A origin=null + i: GET_VAR 'val tmp_7: .IFoo declared in .test4' type=.IFoo origin=null + newValue: CALL 'public final fun plus (other: kotlin.Int): kotlin.Int declared in kotlin.Int' type=kotlin.Int origin=null + $this: CALL 'public final fun get (i: .IFoo): kotlin.Int declared in ' type=kotlin.Int origin=null + $receiver: GET_VAR 'val tmp_6: .A declared in .test4' type=.A origin=null + i: GET_VAR 'val tmp_7: .IFoo declared in .test4' type=.IFoo origin=null + other: CONST Int type=kotlin.Int value=1 FUN name:test5 visibility:public modality:FINAL <> (a:kotlin.Any) returnType:kotlin.Unit VALUE_PARAMETER name:a index:0 type:kotlin.Any BLOCK_BODY diff --git a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.kt.txt b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.kt.txt index 2caa5b1e5f7..f594271cfd8 100644 --- a/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.kt.txt +++ b/compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.fir.kt.txt @@ -76,9 +76,11 @@ fun test3(fn: Function1) { fun test4(fn: Function1) { when { fn is IFoo -> { // BLOCK - val : A = A - val : IFoo = fn /*as IFoo */ - .set(i = , newValue = .get(i = ).plus(other = 1)) + { // BLOCK + val : A = A + val : IFoo = fn /*as IFoo */ + .set(i = , newValue = .get(i = ).plus(other = 1)) + } } } }