diff --git a/compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt b/compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt new file mode 100644 index 00000000000..ed69d00b137 --- /dev/null +++ b/compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt @@ -0,0 +1,22 @@ +// WITH_RUNTIME + +class A(val z: Int) : Comparable { + override fun compareTo(other: A): Int { + return Integer.compare(z, other.z) + } +} + +operator fun A.rangeTo(that: A): ClosedRange = object: ClosedRange { + override val endInclusive: A + get() = that + override val start: A + get() = this@rangeTo +} + +operator fun ClosedRange.iterator() = (start.z..endInclusive.z).map { A(it) }.iterator() + +fun box(): String { + if (!( A(2) in A(1)..A(12) )) return "Fail 1" + if ( A(2) !in A(1)..A(12) ) return "Fail 2" + return "OK" +} diff --git a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index d02db6443e3..d74a0ddd50b 100644 --- a/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-ir-jvm/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -13213,6 +13213,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes doTest(fileName); } + @TestMetadata("inCustomObjectRange.kt") + public void testInCustomObjectRange() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt"); + doTest(fileName); + } + @TestMetadata("inDoubleRangeLiteralVsComparableRangeLiteral.kt") public void testInDoubleRangeLiteralVsComparableRangeLiteral() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inDoubleRangeLiteralVsComparableRangeLiteral.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index eb1e72b1cef..3d2cffbc624 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -13213,6 +13213,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("inCustomObjectRange.kt") + public void testInCustomObjectRange() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt"); + doTest(fileName); + } + @TestMetadata("inDoubleRangeLiteralVsComparableRangeLiteral.kt") public void testInDoubleRangeLiteralVsComparableRangeLiteral() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inDoubleRangeLiteralVsComparableRangeLiteral.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 20beb896132..8b5e0daec52 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -13213,6 +13213,12 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes doTest(fileName); } + @TestMetadata("inCustomObjectRange.kt") + public void testInCustomObjectRange() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt"); + doTest(fileName); + } + @TestMetadata("inDoubleRangeLiteralVsComparableRangeLiteral.kt") public void testInDoubleRangeLiteralVsComparableRangeLiteral() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inDoubleRangeLiteralVsComparableRangeLiteral.kt"); diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java index cdf76179854..91f6e7cd97b 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/JsCodegenBoxTestGenerated.java @@ -14827,6 +14827,12 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest { throw new AssertionError("Looks like this test can be unmuted. Remove IGNORE_BACKEND directive for that."); } + @TestMetadata("inCustomObjectRange.kt") + public void testInCustomObjectRange() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inCustomObjectRange.kt"); + doTest(fileName); + } + @TestMetadata("inDoubleRangeLiteralVsComparableRangeLiteral.kt") public void testInDoubleRangeLiteralVsComparableRangeLiteral() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/box/ranges/contains/inDoubleRangeLiteralVsComparableRangeLiteral.kt");