From af63763da292f3efae50b3da80dc7a48c153a150 Mon Sep 17 00:00:00 2001 From: "Aleksandra.Arsenteva" Date: Fri, 17 Nov 2023 12:41:23 +0300 Subject: [PATCH] KT-62138 add testcases --- ...CompilerTestFE10TestdataTestGenerated.java | 6 ++++ ...sticCompilerFE10TestDataTestGenerated.java | 6 ++++ ...eeOldFrontendDiagnosticsTestGenerated.java | 6 ++++ ...siOldFrontendDiagnosticsTestGenerated.java | 6 ++++ .../AssignOperatorWithExtensionForAny.kt | 25 ++++++++++++++++ .../plusAssignOnArray.fir.kt | 29 +++++++++++++++++++ .../operatorsOverloading/plusAssignOnArray.kt | 10 ++++++- .../plusAssignOnArray.txt | 10 +++++++ .../test/runners/DiagnosticTestGenerated.java | 6 ++++ 9 files changed, 103 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt create mode 100644 compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.fir.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 6221764d3b4..64d71f65354 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -26566,6 +26566,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorAmbiguityExtension.kt"); } + @Test + @TestMetadata("AssignOperatorWithExtensionForAny.kt") + public void testAssignOperatorWithExtensionForAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt"); + } + @Test @TestMetadata("AssignmentOperations.kt") public void testAssignmentOperations() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 1c740e8eb28..f4810b06976 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -26566,6 +26566,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorAmbiguityExtension.kt"); } + @Test + @TestMetadata("AssignOperatorWithExtensionForAny.kt") + public void testAssignOperatorWithExtensionForAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt"); + } + @Test @TestMetadata("AssignmentOperations.kt") public void testAssignmentOperations() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index 5278062e36f..79cf7ae9ac5 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -24566,6 +24566,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorAmbiguityExtension.kt"); } + @Test + @TestMetadata("AssignOperatorWithExtensionForAny.kt") + public void testAssignOperatorWithExtensionForAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt"); + } + @Test @TestMetadata("AssignmentOperations.kt") public void testAssignmentOperations() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 0243d7687df..178d4ce77d3 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -24572,6 +24572,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorAmbiguityExtension.kt"); } + @Test + @TestMetadata("AssignOperatorWithExtensionForAny.kt") + public void testAssignOperatorWithExtensionForAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt"); + } + @Test @TestMetadata("AssignmentOperations.kt") public void testAssignmentOperations() throws Exception { diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt new file mode 100644 index 00000000000..8847a900634 --- /dev/null +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt @@ -0,0 +1,25 @@ +// FIR_IDENTICAL + +class Y +class Z + +class HashMap( + private val defaultValue: V +) { + operator fun get(key: K): V = defaultValue + operator fun set(key: K, value: V) {} +} + +private operator fun Any.plusAssign(p: Any) { } +private operator fun Any.plus(p: Any): Any = Any() + +class Base { + private val x = HashMap(Z()) + + fun foo(): Z { + val y = Y() + val z = Z() + x[y] += z + return x[y] + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.fir.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.fir.kt new file mode 100644 index 00000000000..95b134eaf91 --- /dev/null +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.fir.kt @@ -0,0 +1,29 @@ +// !DIAGNOSTICS: -UNUSED_PARAMETER + +class C { + operator fun get(i: Int): C = this +} + +operator fun C.plus(a: Any): C = this +operator fun C.plusAssign(a: Any) {} + +class C1 { + operator fun get(i: Int): C = C() + operator fun set(i: Int, v: C) {} +} + +class C2 { + operator fun set(i: Int, v: C2) {} + operator fun get(i: Int): C2 = this +} + +operator fun C2.plus(a: Any):C2 = this + +fun test() { + val c = C() + c[0] += "" + var c1 = C1() + c1[0] += "" + var c2 = C2() + c2[0] += "" +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.kt b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.kt index 9cf101b9d9f..bf18d26020d 100644 --- a/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.kt +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.kt @@ -1,4 +1,3 @@ -// FIR_IDENTICAL // !DIAGNOSTICS: -UNUSED_PARAMETER class C { @@ -13,9 +12,18 @@ class C1 { operator fun set(i: Int, v: C) {} } +class C2 { + operator fun set(i: Int, v: C2) {} + operator fun get(i: Int): C2 = this +} + +operator fun C2.plus(a: Any):C2 = this + fun test() { val c = C() c[0] += "" var c1 = C1() c1[0] += "" + var c2 = C2() + c2[0] += "" } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.txt b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.txt index b4e5df4869d..8cca8857871 100644 --- a/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.txt +++ b/compiler/testData/diagnostics/tests/operatorsOverloading/plusAssignOnArray.txt @@ -2,6 +2,7 @@ package public fun test(): kotlin.Unit public operator fun C.plus(/*0*/ a: kotlin.Any): C +public operator fun C2.plus(/*0*/ a: kotlin.Any): C2 public operator fun C.plusAssign(/*0*/ a: kotlin.Any): kotlin.Unit public final class C { @@ -20,3 +21,12 @@ public final class C1 { public final operator fun set(/*0*/ i: kotlin.Int, /*1*/ v: C): kotlin.Unit public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } + +public final class C2 { + public constructor C2() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public final operator fun get(/*0*/ i: kotlin.Int): C2 + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public final operator fun set(/*0*/ i: kotlin.Int, /*1*/ v: C2): kotlin.Unit + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} \ No newline at end of file diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index a5d38c7762b..1dc9b3bec83 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -26566,6 +26566,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorAmbiguityExtension.kt"); } + @Test + @TestMetadata("AssignOperatorWithExtensionForAny.kt") + public void testAssignOperatorWithExtensionForAny() throws Exception { + runTest("compiler/testData/diagnostics/tests/operatorsOverloading/AssignOperatorWithExtensionForAny.kt"); + } + @Test @TestMetadata("AssignmentOperations.kt") public void testAssignmentOperations() throws Exception {