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() {