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");