diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.kt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.kt
new file mode 100644
index 00000000000..b5e2a193aba
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.kt
@@ -0,0 +1,10 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtBinaryExpression
+
+class Foo {
+ operator fun set(n: Int, value: String) {}
+}
+
+fun usageFoo(flag: Boolean, foo: Foo) {
+ if (flag) foo[10] = ""
+}
+
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.txt
new file mode 100644
index 00000000000..f1f13c5eaf4
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.txt
@@ -0,0 +1,33 @@
+KT element: KtBinaryExpression
+FIR element: FirBlockImpl
+FIR source kind: KtRealSourceElementKind
+
+FIR element rendered:
+ {
+ R|/foo|.R|/Foo.set|(Int(10), String())
+ Unit
+}
+
+FIR FILE:
+FILE: [ResolvedTo(IMPORTS)] arrayAssignOperatorAsSingleExpressionInIf.kt
+ public final [ResolvedTo(STATUS)] class Foo : R|kotlin/Any| {
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| {
+ LAZY_super
+ }
+
+ public final operator [ResolvedTo(CONTRACTS)] fun set([ResolvedTo(CONTRACTS)] n: R|kotlin/Int|, [ResolvedTo(CONTRACTS)] value: R|kotlin/String|): R|kotlin/Unit| {
+ }
+
+ }
+ public final [ResolvedTo(BODY_RESOLVE)] fun usageFoo([ResolvedTo(BODY_RESOLVE)] flag: R|kotlin/Boolean|, [ResolvedTo(BODY_RESOLVE)] foo: R|Foo|): R|kotlin/Unit| {
+ when () {
+ R|/flag| -> {
+ {
+ R|/foo|.R|/Foo.set|(Int(10), String())
+ Unit
+ }
+
+ }
+ }
+
+ }
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.kt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.kt
new file mode 100644
index 00000000000..f381494099f
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.kt
@@ -0,0 +1,10 @@
+// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtBinaryExpression
+
+class Foo {
+ operator fun set(n: Int, value: String) {}
+}
+
+fun usageFoo(foo: Foo) {
+ when { else -> foo[10] = "" }
+}
+
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.txt
new file mode 100644
index 00000000000..01c3a3565f4
--- /dev/null
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.txt
@@ -0,0 +1,33 @@
+KT element: KtBinaryExpression
+FIR element: FirBlockImpl
+FIR source kind: KtRealSourceElementKind
+
+FIR element rendered:
+ {
+ R|/foo|.R|/Foo.set|(Int(10), String())
+ Unit
+}
+
+FIR FILE:
+FILE: [ResolvedTo(IMPORTS)] arrayAssignOperatorAsSingleExpressionInWhen.kt
+ public final [ResolvedTo(STATUS)] class Foo : R|kotlin/Any| {
+ public [ResolvedTo(STATUS)] [ContainingClassKey=Foo] constructor(): R|Foo| {
+ LAZY_super
+ }
+
+ public final operator [ResolvedTo(CONTRACTS)] fun set([ResolvedTo(CONTRACTS)] n: R|kotlin/Int|, [ResolvedTo(CONTRACTS)] value: R|kotlin/String|): R|kotlin/Unit| {
+ }
+
+ }
+ public final [ResolvedTo(BODY_RESOLVE)] fun usageFoo([ResolvedTo(BODY_RESOLVE)] foo: R|Foo|): R|kotlin/Unit| {
+ when () {
+ else -> {
+ {
+ R|/foo|.R|/Foo.set|(Int(10), String())
+ Unit
+ }
+
+ }
+ }
+
+ }
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java
index 55c1d45142a..78f3de135fb 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java
@@ -299,6 +299,18 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/getOrBuildFir/calls"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
}
+ @Test
+ @TestMetadata("arrayAssignOperatorAsSingleExpressionInIf.kt")
+ public void testArrayAssignOperatorAsSingleExpressionInIf() {
+ runTest("analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayAssignOperatorAsSingleExpressionInWhen.kt")
+ public void testArrayAssignOperatorAsSingleExpressionInWhen() {
+ runTest("analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.kt");
+ }
+
@Test
@TestMetadata("arrayMinusAssignOperatorsInVariousScopes.kt")
public void testArrayMinusAssignOperatorsInVariousScopes() {
diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java
index 6458f613410..173c2be5e05 100644
--- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java
+++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java
@@ -299,6 +299,18 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testData/getOrBuildFir/calls"), Pattern.compile("^(.+)\\.(kt)$"), null, true);
}
+ @Test
+ @TestMetadata("arrayAssignOperatorAsSingleExpressionInIf.kt")
+ public void testArrayAssignOperatorAsSingleExpressionInIf() {
+ runTest("analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInIf.kt");
+ }
+
+ @Test
+ @TestMetadata("arrayAssignOperatorAsSingleExpressionInWhen.kt")
+ public void testArrayAssignOperatorAsSingleExpressionInWhen() {
+ runTest("analysis/low-level-api-fir/testData/getOrBuildFir/calls/arrayAssignOperatorAsSingleExpressionInWhen.kt");
+ }
+
@Test
@TestMetadata("arrayMinusAssignOperatorsInVariousScopes.kt")
public void testArrayMinusAssignOperatorsInVariousScopes() {