[Commonizer] Enable Optimistic Number Commonization by default
Initially it was restricted to work with type aliases only KT-48455
see test `test property with aliased number return type`
This limitation should be lifted now in order to fix KT-48568
^KT-48568 Verification Pending
diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeAliasCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeAliasCommonizer.kt
index ce04d83..f074d09 100644
--- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeAliasCommonizer.kt
+++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeAliasCommonizer.kt
@@ -17,7 +17,7 @@
) : NullableSingleInvocationCommonizer<CirTypeAlias> {
private val typeCommonizer = typeCommonizer.withOptions {
- withBackwardsTypeAliasSubstitutionEnabled(false).withOptimisticNumberTypeCommonizationEnabled(true)
+ withBackwardsTypeAliasSubstitutionEnabled(false)
}
override fun invoke(values: List<CirTypeAlias>): CirTypeAlias? {
diff --git a/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeCommonizer.kt b/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeCommonizer.kt
index 8c5ae9a..c2e419d 100644
--- a/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeCommonizer.kt
+++ b/native/commonizer/src/org/jetbrains/kotlin/commonizer/core/TypeCommonizer.kt
@@ -34,7 +34,7 @@
}
data class Options(
- val enableOptimisticNumberTypeCommonization: Boolean = false,
+ val enableOptimisticNumberTypeCommonization: Boolean = true,
val enableCovariantNullabilityCommonization: Boolean = false,
val enableForwardTypeAliasSubstitution: Boolean = true,
val enableBackwardsTypeAliasSubstitution: Boolean = true,
diff --git a/native/commonizer/testData/callableMemberCommonization/returnTypes/commonized/common/package_root.kt b/native/commonizer/testData/callableMemberCommonization/returnTypes/commonized/common/package_root.kt
index d5b5e34..844feaf 100644
--- a/native/commonizer/testData/callableMemberCommonization/returnTypes/commonized/common/package_root.kt
+++ b/native/commonizer/testData/callableMemberCommonization/returnTypes/commonized/common/package_root.kt
@@ -27,6 +27,12 @@
expect fun function6(): Planet
expect fun function7(): C
+// Optimistic Number Commonization: KT-48455, KT-48568
+expect val propertyWithMismatchedType1: Int
+expect val propertyWithMismatchedType2: Short
+expect fun functionWithMismatchedType1(): Int
+expect fun functionWithMismatchedType2(): Short
+
expect class Box<T>(value: T) {
val value: T
}
diff --git a/native/commonizer/testData/propertyCommonization/liftingUpConst/commonized/common/package_root.kt b/native/commonizer/testData/propertyCommonization/liftingUpConst/commonized/common/package_root.kt
index b9348ee..c391257 100644
--- a/native/commonizer/testData/propertyCommonization/liftingUpConst/commonized/common/package_root.kt
+++ b/native/commonizer/testData/propertyCommonization/liftingUpConst/commonized/common/package_root.kt
@@ -19,3 +19,10 @@
expect val property18: String
const val property19: Char = 42.toChar()
expect val property20: Char
+
+// Optimistic Number Commonization: KT-48455, KT-48568
+// Mismatched const types should be commonized as expect val's
+expect val property22: Byte
+expect val property23: Short
+expect val property24: Int
+expect val property26: Float
\ No newline at end of file
diff --git a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt
index f4c5b9f..6e70227 100644
--- a/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt
+++ b/native/commonizer/tests/org/jetbrains/kotlin/commonizer/hierarchical/HierarchicalOptimisticNumbersTypeCommonizerTest.kt
@@ -678,12 +678,7 @@
simpleSingleSourceTarget("b", "val x: ULong = null!!")
}
- /*
- Only commonize return types that were specified using a type-alias.
- As with function value parameters, this is not a hard requirement.
- It would also be reasonable to support this case.
- */
- result.assertCommonized("(a, b)", "")
+ result.assertCommonized("(a, b)", "expect val x: kotlin.UInt")
}
fun `test property with aliased number return type`() {