Fix ISE when copying a function with @NotNull bounded type parameters

For example in the case:
<_A extends @NotNull B, B> void f4(_A x, B y) { }

ISE had happened because while substituting the function
we've been creating copies of old type parameters and when initializing
bounds for one of them bounds for other may not be initialized yet
at the same time bounds were necessary for makesSenseToBeDefinitelyNotNull
This commit is contained in:
Denis.Zharkov
2021-07-22 13:37:58 +03:00
committed by Mikhael Bogdanov
parent 0c419eac1a
commit 699d53e7f9
4 changed files with 17 additions and 8 deletions
@@ -5,17 +5,17 @@ public/*package*/ abstract class MethodTypeParameterBounds {
public/*package*/ open fun </*0*/ T : @org.jetbrains.annotations.NotNull kotlin.Any> f1(/*0*/ p0: T): kotlin.Unit
public/*package*/ open fun </*0*/ _A : kotlin.Any!> f10(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<in @org.jetbrains.annotations.Nullable kotlin.Int?>!, _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I3<out kotlin.String!>?
public/*package*/ open fun </*0*/ _A : test.MethodTypeParameterBounds.I4<(@org.jetbrains.annotations.NotNull kotlin.Array<kotlin.Int!>..@org.jetbrains.annotations.NotNull kotlin.Array<out kotlin.Int!>)>!> f11(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<out (@org.jetbrains.annotations.Nullable kotlin.Array<@org.jetbrains.annotations.Nullable kotlin.Int?>?..@org.jetbrains.annotations.Nullable kotlin.Array<out @org.jetbrains.annotations.Nullable kotlin.Int?>?)>!, _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I3<out (@org.jetbrains.annotations.NotNull kotlin.Array<kotlin.Int!>..@org.jetbrains.annotations.NotNull kotlin.Array<out kotlin.Int!>)>?
public/*package*/ open fun </*0*/ _A : test.MethodTypeParameterBounds.I4<kotlin.IntArray!>!> f12(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<out kotlin.IntArray!>!, _A : @org.jetbrains.annotations.NotNull test.MethodTypeParameterBounds.I3<out kotlin.IntArray!>
public/*package*/ open fun </*0*/ _A : test.MethodTypeParameterBounds.I4<kotlin.IntArray!>!> f12(/*0*/ p0: _A!!): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<out kotlin.IntArray!>!, _A : @org.jetbrains.annotations.NotNull test.MethodTypeParameterBounds.I3<out kotlin.IntArray!>
public/*package*/ open fun </*0*/ _A : test.MethodTypeParameterBounds.I4<kotlin.Array<(out) kotlin.Array<(out) (@org.jetbrains.annotations.Nullable kotlin.Array<kotlin.Int!>?..@org.jetbrains.annotations.Nullable kotlin.Array<out kotlin.Int!>?)>!>!>!> f13(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<out (@org.jetbrains.annotations.Nullable kotlin.Array<kotlin.Array<(out) kotlin.Array<(out) kotlin.Array<(out) @org.jetbrains.annotations.Nullable kotlin.Int?>!>!>!>?..@org.jetbrains.annotations.Nullable kotlin.Array<out kotlin.Array<(out) kotlin.Array<(out) kotlin.Array<(out) @org.jetbrains.annotations.Nullable kotlin.Int?>!>!>!>?)>!, _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I3<out kotlin.Array<(out) (@org.jetbrains.annotations.Nullable kotlin.Array<kotlin.Int!>?..@org.jetbrains.annotations.Nullable kotlin.Array<out kotlin.Int!>?)>!>?
public/*package*/ abstract fun </*0*/ _A : test.MethodTypeParameterBounds.I4<(@org.jetbrains.annotations.NotNull kotlin.Array<kotlin.IntArray!>..@org.jetbrains.annotations.NotNull kotlin.Array<out kotlin.IntArray!>)>!> f14(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<out kotlin.Array<(out) kotlin.Array<(out) kotlin.IntArray!>!>!>!, _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I3<out kotlin.Array<(out) (@org.jetbrains.annotations.Nullable kotlin.Array<kotlin.IntArray!>?..@org.jetbrains.annotations.Nullable kotlin.Array<out kotlin.IntArray!>?)>!>?
public/*package*/ open fun </*0*/ _A : kotlin.Any!, /*1*/ B : test.MethodTypeParameterBounds.I3<@org.jetbrains.annotations.Nullable _A?>!> f15(/*0*/ p0: _A!): kotlin.Unit where B : @org.jetbrains.annotations.NotNull test.MethodTypeParameterBounds.I2<_A!>
public/*package*/ open fun </*0*/ _A : kotlin.Any!, /*1*/ B : @org.jetbrains.annotations.NotNull kotlin.Int> f2(/*0*/ p0: _A!, /*1*/ p1: B): kotlin.Unit
public/*package*/ open fun </*0*/ _A : kotlin.Any!, /*1*/ B : kotlin.Any!> f3(/*0*/ p0: _A!, /*1*/ p1: B): kotlin.Unit where B : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I1?
public/*package*/ open fun </*0*/ _A : @org.jetbrains.annotations.NotNull B, /*1*/ B : kotlin.Any!> f4(/*0*/ p0: _A, /*1*/ p1: B!): kotlin.Unit
public/*package*/ open fun </*0*/ _A : @org.jetbrains.annotations.NotNull B!!, /*1*/ B : kotlin.Any!> f4(/*0*/ p0: _A, /*1*/ p1: B!): kotlin.Unit
public/*package*/ open fun </*0*/ _A : kotlin.Any!, /*1*/ B : @org.jetbrains.annotations.Nullable _A?> f5(/*0*/ p0: _A!, /*1*/ p1: B): kotlin.Unit
public/*package*/ open fun </*0*/ _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I1?> f6(): kotlin.Unit
public/*package*/ abstract fun </*0*/ _A : kotlin.Any!, /*1*/ B : @org.jetbrains.annotations.NotNull _A> f7(/*0*/ p0: _A!, /*1*/ p1: B): kotlin.Unit
public/*package*/ abstract fun </*0*/ _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I1?, /*1*/ B : kotlin.Any!, /*2*/ C : kotlin.Any!, /*3*/ D : @org.jetbrains.annotations.NotNull E, /*4*/ E : kotlin.Any!, /*5*/ F : kotlin.Any!> f8(/*0*/ p0: _A, /*1*/ p1: B!, /*2*/ p2: C!, /*3*/ p3: D, /*4*/ p4: E!, /*5*/ p5: F!): kotlin.Unit
public/*package*/ abstract fun </*0*/ _A : kotlin.Any!, /*1*/ B : @org.jetbrains.annotations.NotNull _A!!> f7(/*0*/ p0: _A!, /*1*/ p1: B): kotlin.Unit
public/*package*/ abstract fun </*0*/ _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I1?, /*1*/ B : kotlin.Any!, /*2*/ C : kotlin.Any!, /*3*/ D : @org.jetbrains.annotations.NotNull E!!, /*4*/ E : kotlin.Any!, /*5*/ F : kotlin.Any!> f8(/*0*/ p0: _A, /*1*/ p1: B!, /*2*/ p2: C!, /*3*/ p3: D, /*4*/ p4: E!, /*5*/ p5: F!): kotlin.Unit
public/*package*/ open fun </*0*/ _A : kotlin.Any!> f9(/*0*/ p0: _A): kotlin.Unit where _A : test.MethodTypeParameterBounds.I2<@org.jetbrains.annotations.Nullable kotlin.Int?>!, _A : @org.jetbrains.annotations.Nullable test.MethodTypeParameterBounds.I3<kotlin.String!>?
public/*package*/ interface I1 {