K2: repeat K1 representation for flexible type parameters

This commit changes the behavior of KT-59138 effectively declining it in 2.0.
However, we plan to implement KT-59138 behavior under a feature
flag in 2.0 (see KT-66447), and switch this feature on version 2.x.

Also, this commit implements the LC resolution about postponing
KT-57014 change. We don't have KT-57014 described behavior in 2.0 anymore.
However, we plan to implement a deprecation warning here, see KT-65578.

After this commit, 6 diagnostic tests become incorrectly broken:
- 5 tests from PurelyImplementedCollection group
- a test platformTypes/nullableTypeArgument.kt

This commit also breaks currently fixed-in-k2 KT-50134
(it is fixed again in the following commits),
as well as KT-58933 (it will remain not fixed till we enable KT-59138
behavior again).

#KT-65596 In Progress
#KT-57014 In Progress
#KT-58933 Submitted
This commit is contained in:
Denis.Zharkov
2024-02-06 15:33:03 +01:00
committed by Space Team
parent 7fd46f1450
commit 81414d758d
160 changed files with 343 additions and 479 deletions
@@ -40,15 +40,15 @@ FILE fqName:<root> fileName:/constructorWithOwnTypeParametersCall.kt
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN name:testJava visibility:public modality:FINAL <> () returnType:<root>.J1.J2<kotlin.Double, kotlin.Int>
FUN name:testJava visibility:public modality:FINAL <> () returnType:<root>.J1.J2<@[FlexibleNullability] kotlin.Double?, @[FlexibleNullability] kotlin.Int?>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testJava (): <root>.J1.J2<kotlin.Double, kotlin.Int> declared in <root>'
CONSTRUCTOR_CALL 'public constructor <init> <Y2> () declared in <root>.J1.J2' type=<root>.J1.J2<kotlin.Double, kotlin.Int> origin=null
<class: X2>: kotlin.Double
<Y2>: kotlin.CharSequence
$outer: CONSTRUCTOR_CALL 'public constructor <init> <Y1> () declared in <root>.J1' type=<root>.J1<kotlin.Int> origin=null
<class: X1>: kotlin.Int
<Y1>: kotlin.String
RETURN type=kotlin.Nothing from='public final fun testJava (): <root>.J1.J2<@[FlexibleNullability] kotlin.Double?, @[FlexibleNullability] kotlin.Int?> declared in <root>'
CONSTRUCTOR_CALL 'public constructor <init> <Y2> () declared in <root>.J1.J2' type=<root>.J1.J2<@[FlexibleNullability] kotlin.Double?, @[FlexibleNullability] kotlin.Int?> origin=null
<class: X2>: @[FlexibleNullability] kotlin.Double?
<Y2>: @[FlexibleNullability] kotlin.CharSequence?
$outer: CONSTRUCTOR_CALL 'public constructor <init> <Y1> () declared in <root>.J1' type=<root>.J1<@[FlexibleNullability] kotlin.Int?> origin=null
<class: X1>: @[FlexibleNullability] kotlin.Int?
<Y1>: @[FlexibleNullability] kotlin.String?
FUN name:testKotlin visibility:public modality:FINAL <> () returnType:<root>.K1.K2<kotlin.String, kotlin.Int>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun testKotlin (): <root>.K1.K2<kotlin.String, kotlin.Int> declared in <root>'
@@ -16,11 +16,10 @@ class K1<T1 : Number> {
}
fun testJava(): J2<Double, Int> {
return J1<Int, String>().J2<Double, CharSequence>()
fun testJava(): J2<@FlexibleNullability Double?, @FlexibleNullability Int?> {
return J1<@FlexibleNullability Int?, @FlexibleNullability String?>().J2<@FlexibleNullability Double?, @FlexibleNullability CharSequence?>()
}
fun testKotlin(): K2<String, Int> {
return K1<Int>().K2<String>()
}
@@ -1,8 +1,8 @@
FILE fqName:<root> fileName:/samConversionToGeneric.kt
FUN name:test1 visibility:public modality:FINAL <> () returnType:<root>.J<kotlin.String>
FUN name:test1 visibility:public modality:FINAL <> () returnType:<root>.J<@[FlexibleNullability] kotlin.String?>
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun test1 (): <root>.J<kotlin.String> declared in <root>'
TYPE_OP type=<root>.J<kotlin.String> origin=SAM_CONVERSION typeOperand=<root>.J<kotlin.String>
RETURN type=kotlin.Nothing from='public final fun test1 (): <root>.J<@[FlexibleNullability] kotlin.String?> declared in <root>'
TYPE_OP type=<root>.J<@[FlexibleNullability] kotlin.String?> origin=SAM_CONVERSION typeOperand=<root>.J<@[FlexibleNullability] kotlin.String?>
FUN_EXPR type=kotlin.Function1<@[FlexibleNullability] kotlin.String?, @[FlexibleNullability] kotlin.String?> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (x:@[FlexibleNullability] kotlin.String?) returnType:@[FlexibleNullability] kotlin.String?
VALUE_PARAMETER name:x index:0 type:@[FlexibleNullability] kotlin.String?
@@ -1,8 +1,8 @@
fun test1(): J<String> {
fun test1(): J<@FlexibleNullability String?> {
return local fun <anonymous>(x: @FlexibleNullability String?): @FlexibleNullability String? {
return x
}
/*-> J<String> */
/*-> J<@FlexibleNullability String?> */
}
fun test10(fn: Function1<Int, String>) {
@@ -49,4 +49,3 @@ fun test8(efn: @ExtensionFunctionType Function1<String, String>): J<@FlexibleNul
fun test9(efn: @ExtensionFunctionType Function1<String, String>) {
bar<@FlexibleNullability String?>(j = efn /*-> J<@FlexibleNullability String?> */)
}