diff --git a/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/common/package_root.kt b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/common/package_root.kt new file mode 100644 index 00000000000..4fcbe279410 --- /dev/null +++ b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/common/package_root.kt @@ -0,0 +1,45 @@ +expect interface I1 +expect interface I2 +expect interface I3 + +expect fun functionWithValueParameter(value: T): Unit +expect fun functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun > functionWithValueParameter(value: T): Unit +expect fun functionWithValueParameter(value: T): Unit +expect fun functionWithValueParameter(value: T): Unit +expect fun functionWithValueParameter(value: I1): Unit +expect fun functionWithValueParameter(value: I2): Unit +expect fun functionWithValueParameter(value: Any): Unit +expect fun functionWithValueParameter(value: Any?): Unit +expect fun functionWithValueParameter(): Unit + +expect fun T.functionWithReceiver(): Unit +expect fun T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun > T.functionWithReceiver(): Unit +expect fun T.functionWithReceiver(): Unit +expect fun T.functionWithReceiver(): Unit +expect fun I1.functionWithReceiver(): Unit +expect fun I2.functionWithReceiver(): Unit +expect fun Any.functionWithReceiver(): Unit +expect fun Any?.functionWithReceiver(): Unit +expect fun functionWithReceiver(): Unit diff --git a/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/js/package_root.kt b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/js/package_root.kt new file mode 100644 index 00000000000..281165d3e82 --- /dev/null +++ b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/js/package_root.kt @@ -0,0 +1,45 @@ +actual interface I1 +actual interface I2 +actual interface I3 + +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: I1) = Unit +actual fun functionWithValueParameter(value: I2) = Unit +actual fun functionWithValueParameter(value: Any) = Unit +actual fun functionWithValueParameter(value: Any?) = Unit +actual fun functionWithValueParameter() = Unit + +actual fun T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun I1.functionWithReceiver() = Unit +actual fun I2.functionWithReceiver() = Unit +actual fun Any.functionWithReceiver() = Unit +actual fun Any?.functionWithReceiver() = Unit +actual fun functionWithReceiver() = Unit diff --git a/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt new file mode 100644 index 00000000000..281165d3e82 --- /dev/null +++ b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt @@ -0,0 +1,45 @@ +actual interface I1 +actual interface I2 +actual interface I3 + +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun > functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: T) = Unit +actual fun functionWithValueParameter(value: I1) = Unit +actual fun functionWithValueParameter(value: I2) = Unit +actual fun functionWithValueParameter(value: Any) = Unit +actual fun functionWithValueParameter(value: Any?) = Unit +actual fun functionWithValueParameter() = Unit + +actual fun T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun > T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun T.functionWithReceiver() = Unit +actual fun I1.functionWithReceiver() = Unit +actual fun I2.functionWithReceiver() = Unit +actual fun Any.functionWithReceiver() = Unit +actual fun Any?.functionWithReceiver() = Unit +actual fun functionWithReceiver() = Unit diff --git a/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/js/package_root.kt b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/js/package_root.kt new file mode 100644 index 00000000000..63d0f26c8b2 --- /dev/null +++ b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/js/package_root.kt @@ -0,0 +1,45 @@ +interface I1 +interface I2 +interface I3 + +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: I1) = Unit +fun functionWithValueParameter(value: I2) = Unit +fun functionWithValueParameter(value: Any) = Unit +fun functionWithValueParameter(value: Any?) = Unit +fun functionWithValueParameter() = Unit + +fun T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun I1.functionWithReceiver() = Unit +fun I2.functionWithReceiver() = Unit +fun Any.functionWithReceiver() = Unit +fun Any?.functionWithReceiver() = Unit +fun functionWithReceiver() = Unit diff --git a/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/jvm/package_root.kt b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/jvm/package_root.kt new file mode 100644 index 00000000000..63d0f26c8b2 --- /dev/null +++ b/native/commonizer/testData/functionCommonization/overloadingByUpperBounds/original/jvm/package_root.kt @@ -0,0 +1,45 @@ +interface I1 +interface I2 +interface I3 + +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun > functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: T) = Unit +fun functionWithValueParameter(value: I1) = Unit +fun functionWithValueParameter(value: I2) = Unit +fun functionWithValueParameter(value: Any) = Unit +fun functionWithValueParameter(value: Any?) = Unit +fun functionWithValueParameter() = Unit + +fun T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun > T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun T.functionWithReceiver() = Unit +fun I1.functionWithReceiver() = Unit +fun I2.functionWithReceiver() = Unit +fun Any.functionWithReceiver() = Unit +fun Any?.functionWithReceiver() = Unit +fun functionWithReceiver() = Unit diff --git a/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/common/package_root.kt b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/common/package_root.kt new file mode 100644 index 00000000000..d7c695e6da0 --- /dev/null +++ b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/common/package_root.kt @@ -0,0 +1,26 @@ +expect interface I1 +expect interface I2 +expect interface I3 + +expect object Holder { + val T.propertyWithReceiver: Unit + val T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val > T.propertyWithReceiver: Unit + val T.propertyWithReceiver: Unit + val T.propertyWithReceiver: Unit + val I1.propertyWithReceiver: Unit + val I2.propertyWithReceiver: Unit + val Any.propertyWithReceiver: Unit + val Any?.propertyWithReceiver: Unit + val propertyWithReceiver: Unit +} diff --git a/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/js/package_root.kt b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/js/package_root.kt new file mode 100644 index 00000000000..0661c51fd5f --- /dev/null +++ b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/js/package_root.kt @@ -0,0 +1,26 @@ +actual interface I1 +actual interface I2 +actual interface I3 + +actual object Holder { + actual val T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val I1.propertyWithReceiver: Unit get() = Unit + actual val I2.propertyWithReceiver: Unit get() = Unit + actual val Any.propertyWithReceiver: Unit get() = Unit + actual val Any?.propertyWithReceiver: Unit get() = Unit + actual val propertyWithReceiver: Unit get() = Unit +} diff --git a/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt new file mode 100644 index 00000000000..0661c51fd5f --- /dev/null +++ b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/commonized/jvm/package_root.kt @@ -0,0 +1,26 @@ +actual interface I1 +actual interface I2 +actual interface I3 + +actual object Holder { + actual val T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val > T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val T.propertyWithReceiver: Unit get() = Unit + actual val I1.propertyWithReceiver: Unit get() = Unit + actual val I2.propertyWithReceiver: Unit get() = Unit + actual val Any.propertyWithReceiver: Unit get() = Unit + actual val Any?.propertyWithReceiver: Unit get() = Unit + actual val propertyWithReceiver: Unit get() = Unit +} diff --git a/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/js/package_root.kt b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/js/package_root.kt new file mode 100644 index 00000000000..c17a84a0591 --- /dev/null +++ b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/js/package_root.kt @@ -0,0 +1,26 @@ +interface I1 +interface I2 +interface I3 + +object Holder { + val T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val I1.propertyWithReceiver: Unit get() = Unit + val I2.propertyWithReceiver: Unit get() = Unit + val Any.propertyWithReceiver: Unit get() = Unit + val Any?.propertyWithReceiver: Unit get() = Unit + val propertyWithReceiver: Unit get() = Unit +} diff --git a/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/jvm/package_root.kt b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/jvm/package_root.kt new file mode 100644 index 00000000000..c17a84a0591 --- /dev/null +++ b/native/commonizer/testData/propertyCommonization/overloadingByUpperBounds/original/jvm/package_root.kt @@ -0,0 +1,26 @@ +interface I1 +interface I2 +interface I3 + +object Holder { + val T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val > T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val T.propertyWithReceiver: Unit get() = Unit + val I1.propertyWithReceiver: Unit get() = Unit + val I2.propertyWithReceiver: Unit get() = Unit + val Any.propertyWithReceiver: Unit get() = Unit + val Any?.propertyWithReceiver: Unit get() = Unit + val propertyWithReceiver: Unit get() = Unit +} diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/FunctionCommonizationFromSourcesTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/FunctionCommonizationFromSourcesTest.kt index 5cf962495e2..7d7b2dbfe31 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/FunctionCommonizationFromSourcesTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/FunctionCommonizationFromSourcesTest.kt @@ -17,4 +17,6 @@ class FunctionCommonizationFromSourcesTest : AbstractCommonizationFromSourcesTes fun testSpecifics() = doTestSuccessfulCommonization() fun testSignaturesWithNullableTypealiases() = doTestSuccessfulCommonization() + + fun testOverloadingByUpperBounds() = doTestSuccessfulCommonization() } diff --git a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/PropertyCommonizationFromSourcesTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/PropertyCommonizationFromSourcesTest.kt index 0a9c1950310..103d815fd7b 100644 --- a/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/PropertyCommonizationFromSourcesTest.kt +++ b/native/commonizer/tests/org/jetbrains/kotlin/descriptors/commonizer/PropertyCommonizationFromSourcesTest.kt @@ -15,4 +15,6 @@ class PropertyCommonizationFromSourcesTest : AbstractCommonizationFromSourcesTes fun testSetters() = doTestSuccessfulCommonization() fun testLiftingUpConst() = doTestSuccessfulCommonization() + + fun testOverloadingByUpperBounds() = doTestSuccessfulCommonization() }