Files
kotlin-fork/compiler/testData/codegen/box/interfaceCallsNCasts/conservativeItable.kt
T
2024-02-26 13:38:49 +00:00

688 lines
17 KiB
Kotlin
Vendored

/*
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
// WITH_STDLIB
import kotlin.test.*
interface I0 {
fun foo0(x: Int): Int
}
interface I1 {
fun foo1(x: Int): Int
}
interface I2 {
fun foo2(x: Int): Int
}
interface I3 {
fun foo3(x: Int): Int
}
interface I4 {
fun foo4(x: Int): Int
}
interface I5 {
fun foo5(x: Int): Int
}
interface I6 {
fun foo6(x: Int): Int
}
interface I7 {
fun foo7(x: Int): Int
}
interface I8 {
fun foo8(x: Int): Int
}
interface I9 {
fun foo9(x: Int): Int
}
interface I10 {
fun foo10(x: Int): Int
}
interface I11 {
fun foo11(x: Int): Int
}
interface I12 {
fun foo12(x: Int): Int
}
interface I13 {
fun foo13(x: Int): Int
}
interface I14 {
fun foo14(x: Int): Int
}
interface I15 {
fun foo15(x: Int): Int
}
interface I16 {
fun foo16(x: Int): Int
}
interface I17 {
fun foo17(x: Int): Int
}
interface I18 {
fun foo18(x: Int): Int
}
interface I19 {
fun foo19(x: Int): Int
}
interface I20 {
fun foo20(x: Int): Int
}
interface I21 {
fun foo21(x: Int): Int
}
interface I22 {
fun foo22(x: Int): Int
}
interface I23 {
fun foo23(x: Int): Int
}
interface I24 {
fun foo24(x: Int): Int
}
interface I25 {
fun foo25(x: Int): Int
}
interface I26 {
fun foo26(x: Int): Int
}
interface I27 {
fun foo27(x: Int): Int
}
interface I28 {
fun foo28(x: Int): Int
}
interface I29 {
fun foo29(x: Int): Int
}
interface I30 {
fun foo30(x: Int): Int
}
interface I31 {
fun foo31(x: Int): Int
}
interface I32 {
fun foo32(x: Int): Int
}
interface I33 {
fun foo33(x: Int): Int
}
interface I34 {
fun foo34(x: Int): Int
}
interface I35 {
fun foo35(x: Int): Int
}
interface I36 {
fun foo36(x: Int): Int
}
interface I37 {
fun foo37(x: Int): Int
}
interface I38 {
fun foo38(x: Int): Int
}
interface I39 {
fun foo39(x: Int): Int
}
interface I40 {
fun foo40(x: Int): Int
}
interface I41 {
fun foo41(x: Int): Int
}
interface I42 {
fun foo42(x: Int): Int
}
interface I43 {
fun foo43(x: Int): Int
}
interface I44 {
fun foo44(x: Int): Int
}
interface I45 {
fun foo45(x: Int): Int
}
interface I46 {
fun foo46(x: Int): Int
}
interface I47 {
fun foo47(x: Int): Int
}
interface I48 {
fun foo48(x: Int): Int
}
interface I49 {
fun foo49(x: Int): Int
}
interface I50 {
fun foo50(x: Int): Int
}
interface I51 {
fun foo51(x: Int): Int
}
interface I52 {
fun foo52(x: Int): Int
}
interface I53 {
fun foo53(x: Int): Int
}
interface I54 {
fun foo54(x: Int): Int
}
interface I55 {
fun foo55(x: Int): Int
}
interface I56 {
fun foo56(x: Int): Int
}
interface I57 {
fun foo57(x: Int): Int
}
interface I58 {
fun foo58(x: Int): Int
}
interface I59 {
fun foo59(x: Int): Int
}
interface I60 {
fun foo60(x: Int): Int
}
interface I61 {
fun foo61(x: Int): Int
}
interface I62 {
fun foo62(x: Int): Int
}
interface I63 {
fun foo63(x: Int): Int
}
interface I64 {
fun foo64(x: Int): Int
}
interface I65 {
fun foo65(x: Int): Int
}
interface I66 {
fun foo66(x: Int): Int
}
interface I67 {
fun foo67(x: Int): Int
}
interface I68 {
fun foo68(x: Int): Int
}
interface I69 {
fun foo69(x: Int): Int
}
interface I70 {
fun foo70(x: Int): Int
}
interface I71 {
fun foo71(x: Int): Int
}
interface I72 {
fun foo72(x: Int): Int
}
interface I73 {
fun foo73(x: Int): Int
}
interface I74 {
fun foo74(x: Int): Int
}
interface I75 {
fun foo75(x: Int): Int
}
interface I76 {
fun foo76(x: Int): Int
}
interface I77 {
fun foo77(x: Int): Int
}
interface I78 {
fun foo78(x: Int): Int
}
interface I79 {
fun foo79(x: Int): Int
}
interface I80 {
fun foo80(x: Int): Int
}
interface I81 {
fun foo81(x: Int): Int
}
interface I82 {
fun foo82(x: Int): Int
}
interface I83 {
fun foo83(x: Int): Int
}
interface I84 {
fun foo84(x: Int): Int
}
interface I85 {
fun foo85(x: Int): Int
}
interface I86 {
fun foo86(x: Int): Int
}
interface I87 {
fun foo87(x: Int): Int
}
interface I88 {
fun foo88(x: Int): Int
}
interface I89 {
fun foo89(x: Int): Int
}
interface I90 {
fun foo90(x: Int): Int
}
interface I91 {
fun foo91(x: Int): Int
}
interface I92 {
fun foo92(x: Int): Int
}
interface I93 {
fun foo93(x: Int): Int
}
interface I94 {
fun foo94(x: Int): Int
}
interface I95 {
fun foo95(x: Int): Int
}
interface I96 {
fun foo96(x: Int): Int
}
interface I97 {
fun foo97(x: Int): Int
}
interface I98 {
fun foo98(x: Int): Int
}
interface I99 {
fun foo99(x: Int): Int
}
class Bar : I0, I1, I2, I3, I4, I5, I6, I7, I8, I9, I10, I11, I12, I13, I14, I15, I16, I17, I18, I19, I20, I21, I22,
I23, I24, I25, I26, I27, I28, I29, I30, I31, I32, I33, I34, I35, I36, I37, I38, I39, I40, I41, I42, I43, I44,
I45, I46, I47, I48, I49, I50, I51, I52, I53, I54, I55, I56, I57, I58, I59, I60, I61, I62, I63, I64, I65, I66,
I67, I68, I69, I70, I71, I72, I73, I74, I75, I76, I77, I78, I79, I80, I81, I82, I83, I84, I85, I86, I87, I88,
I89, I90, I91, I92, I93, I94, I95, I96, I97, I98, I99 {
override fun foo0(x: Int) = x + 0
override fun foo1(x: Int) = x + 1
override fun foo2(x: Int) = x + 2
override fun foo3(x: Int) = x + 3
override fun foo4(x: Int) = x + 4
override fun foo5(x: Int) = x + 5
override fun foo6(x: Int) = x + 6
override fun foo7(x: Int) = x + 7
override fun foo8(x: Int) = x + 8
override fun foo9(x: Int) = x + 9
override fun foo10(x: Int) = x + 10
override fun foo11(x: Int) = x + 11
override fun foo12(x: Int) = x + 12
override fun foo13(x: Int) = x + 13
override fun foo14(x: Int) = x + 14
override fun foo15(x: Int) = x + 15
override fun foo16(x: Int) = x + 16
override fun foo17(x: Int) = x + 17
override fun foo18(x: Int) = x + 18
override fun foo19(x: Int) = x + 19
override fun foo20(x: Int) = x + 20
override fun foo21(x: Int) = x + 21
override fun foo22(x: Int) = x + 22
override fun foo23(x: Int) = x + 23
override fun foo24(x: Int) = x + 24
override fun foo25(x: Int) = x + 25
override fun foo26(x: Int) = x + 26
override fun foo27(x: Int) = x + 27
override fun foo28(x: Int) = x + 28
override fun foo29(x: Int) = x + 29
override fun foo30(x: Int) = x + 30
override fun foo31(x: Int) = x + 31
override fun foo32(x: Int) = x + 32
override fun foo33(x: Int) = x + 33
override fun foo34(x: Int) = x + 34
override fun foo35(x: Int) = x + 35
override fun foo36(x: Int) = x + 36
override fun foo37(x: Int) = x + 37
override fun foo38(x: Int) = x + 38
override fun foo39(x: Int) = x + 39
override fun foo40(x: Int) = x + 40
override fun foo41(x: Int) = x + 41
override fun foo42(x: Int) = x + 42
override fun foo43(x: Int) = x + 43
override fun foo44(x: Int) = x + 44
override fun foo45(x: Int) = x + 45
override fun foo46(x: Int) = x + 46
override fun foo47(x: Int) = x + 47
override fun foo48(x: Int) = x + 48
override fun foo49(x: Int) = x + 49
override fun foo50(x: Int) = x + 50
override fun foo51(x: Int) = x + 51
override fun foo52(x: Int) = x + 52
override fun foo53(x: Int) = x + 53
override fun foo54(x: Int) = x + 54
override fun foo55(x: Int) = x + 55
override fun foo56(x: Int) = x + 56
override fun foo57(x: Int) = x + 57
override fun foo58(x: Int) = x + 58
override fun foo59(x: Int) = x + 59
override fun foo60(x: Int) = x + 60
override fun foo61(x: Int) = x + 61
override fun foo62(x: Int) = x + 62
override fun foo63(x: Int) = x + 63
override fun foo64(x: Int) = x + 64
override fun foo65(x: Int) = x + 65
override fun foo66(x: Int) = x + 66
override fun foo67(x: Int) = x + 67
override fun foo68(x: Int) = x + 68
override fun foo69(x: Int) = x + 69
override fun foo70(x: Int) = x + 70
override fun foo71(x: Int) = x + 71
override fun foo72(x: Int) = x + 72
override fun foo73(x: Int) = x + 73
override fun foo74(x: Int) = x + 74
override fun foo75(x: Int) = x + 75
override fun foo76(x: Int) = x + 76
override fun foo77(x: Int) = x + 77
override fun foo78(x: Int) = x + 78
override fun foo79(x: Int) = x + 79
override fun foo80(x: Int) = x + 80
override fun foo81(x: Int) = x + 81
override fun foo82(x: Int) = x + 82
override fun foo83(x: Int) = x + 83
override fun foo84(x: Int) = x + 84
override fun foo85(x: Int) = x + 85
override fun foo86(x: Int) = x + 86
override fun foo87(x: Int) = x + 87
override fun foo88(x: Int) = x + 88
override fun foo89(x: Int) = x + 89
override fun foo90(x: Int) = x + 90
override fun foo91(x: Int) = x + 91
override fun foo92(x: Int) = x + 92
override fun foo93(x: Int) = x + 93
override fun foo94(x: Int) = x + 94
override fun foo95(x: Int) = x + 95
override fun foo96(x: Int) = x + 96
override fun foo97(x: Int) = x + 97
override fun foo98(x: Int) = x + 98
override fun foo99(x: Int) = x + 99
}
fun check_is_I0(x: Any) = x is I0
fun check_is_I1(x: Any) = x is I1
fun check_is_I2(x: Any) = x is I2
fun check_is_I3(x: Any) = x is I3
fun check_is_I4(x: Any) = x is I4
fun check_is_I5(x: Any) = x is I5
fun check_is_I6(x: Any) = x is I6
fun check_is_I7(x: Any) = x is I7
fun check_is_I8(x: Any) = x is I8
fun check_is_I9(x: Any) = x is I9
fun check_is_I10(x: Any) = x is I10
fun check_is_I11(x: Any) = x is I11
fun check_is_I12(x: Any) = x is I12
fun check_is_I13(x: Any) = x is I13
fun check_is_I14(x: Any) = x is I14
fun check_is_I15(x: Any) = x is I15
fun check_is_I16(x: Any) = x is I16
fun check_is_I17(x: Any) = x is I17
fun check_is_I18(x: Any) = x is I18
fun check_is_I19(x: Any) = x is I19
fun check_is_I20(x: Any) = x is I20
fun check_is_I21(x: Any) = x is I21
fun check_is_I22(x: Any) = x is I22
fun check_is_I23(x: Any) = x is I23
fun check_is_I24(x: Any) = x is I24
fun check_is_I25(x: Any) = x is I25
fun check_is_I26(x: Any) = x is I26
fun check_is_I27(x: Any) = x is I27
fun check_is_I28(x: Any) = x is I28
fun check_is_I29(x: Any) = x is I29
fun check_is_I30(x: Any) = x is I30
fun check_is_I31(x: Any) = x is I31
fun check_is_I32(x: Any) = x is I32
fun check_is_I33(x: Any) = x is I33
fun check_is_I34(x: Any) = x is I34
fun check_is_I35(x: Any) = x is I35
fun check_is_I36(x: Any) = x is I36
fun check_is_I37(x: Any) = x is I37
fun check_is_I38(x: Any) = x is I38
fun check_is_I39(x: Any) = x is I39
fun check_is_I40(x: Any) = x is I40
fun check_is_I41(x: Any) = x is I41
fun check_is_I42(x: Any) = x is I42
fun check_is_I43(x: Any) = x is I43
fun check_is_I44(x: Any) = x is I44
fun check_is_I45(x: Any) = x is I45
fun check_is_I46(x: Any) = x is I46
fun check_is_I47(x: Any) = x is I47
fun check_is_I48(x: Any) = x is I48
fun check_is_I49(x: Any) = x is I49
fun check_is_I50(x: Any) = x is I50
fun check_is_I51(x: Any) = x is I51
fun check_is_I52(x: Any) = x is I52
fun check_is_I53(x: Any) = x is I53
fun check_is_I54(x: Any) = x is I54
fun check_is_I55(x: Any) = x is I55
fun check_is_I56(x: Any) = x is I56
fun check_is_I57(x: Any) = x is I57
fun check_is_I58(x: Any) = x is I58
fun check_is_I59(x: Any) = x is I59
fun check_is_I60(x: Any) = x is I60
fun check_is_I61(x: Any) = x is I61
fun check_is_I62(x: Any) = x is I62
fun check_is_I63(x: Any) = x is I63
fun check_is_I64(x: Any) = x is I64
fun check_is_I65(x: Any) = x is I65
fun check_is_I66(x: Any) = x is I66
fun check_is_I67(x: Any) = x is I67
fun check_is_I68(x: Any) = x is I68
fun check_is_I69(x: Any) = x is I69
fun check_is_I70(x: Any) = x is I70
fun check_is_I71(x: Any) = x is I71
fun check_is_I72(x: Any) = x is I72
fun check_is_I73(x: Any) = x is I73
fun check_is_I74(x: Any) = x is I74
fun check_is_I75(x: Any) = x is I75
fun check_is_I76(x: Any) = x is I76
fun check_is_I77(x: Any) = x is I77
fun check_is_I78(x: Any) = x is I78
fun check_is_I79(x: Any) = x is I79
fun check_is_I80(x: Any) = x is I80
fun check_is_I81(x: Any) = x is I81
fun check_is_I82(x: Any) = x is I82
fun check_is_I83(x: Any) = x is I83
fun check_is_I84(x: Any) = x is I84
fun check_is_I85(x: Any) = x is I85
fun check_is_I86(x: Any) = x is I86
fun check_is_I87(x: Any) = x is I87
fun check_is_I88(x: Any) = x is I88
fun check_is_I89(x: Any) = x is I89
fun check_is_I90(x: Any) = x is I90
fun check_is_I91(x: Any) = x is I91
fun check_is_I92(x: Any) = x is I92
fun check_is_I93(x: Any) = x is I93
fun check_is_I94(x: Any) = x is I94
fun check_is_I95(x: Any) = x is I95
fun check_is_I96(x: Any) = x is I96
fun check_is_I97(x: Any) = x is I97
fun check_is_I98(x: Any) = x is I98
fun check_is_I99(x: Any) = x is I99
interface I_M1 {
fun bar(x: Int): Int
}
class Bar2 : I_M1 {
override fun bar(x: Int) = 497 * x + 42
}
class I42_Impl1 : I42 {
override fun foo42(x: Int) = x * 2 + 42
}
class I42_Impl2 : I42 {
override fun foo42(x: Int) = x * 3 + 42
}
class I42_Impl3 : I42 {
override fun foo42(x: Int) = x * 4 + 42
}
class I42_Impl4 : I42 {
override fun foo42(x: Int) = x * 5 + 42
}
class I42_Impl5 : I42 {
override fun foo42(x: Int) = x * 6 + 42
}
class I42_Impl6 : I42 {
override fun foo42(x: Int) = x * 7 + 42
}
class I42_Impl7 : I42 {
override fun foo42(x: Int) = x * 8 + 42
}
class I42_Impl8 : I42 {
override fun foo42(x: Int) = x * 9 + 42
}
fun foo(i42: I42, x: Int) = i42.foo42(x)
fun bar(i_m1: I_M1, x: Int) = i_m1.bar(x)
fun box(): String {
val y = Bar2()
assertEquals(539, bar(y, 1))
val x0 = Bar()
var t = 0
if (check_is_I0(x0)) t = t + 1
if (check_is_I1(x0)) t = t + 2
if (check_is_I2(x0)) t = t + 3
if (check_is_I3(x0)) t = t + 4
if (check_is_I4(x0)) t = t + 5
if (check_is_I5(x0)) t = t + 6
if (check_is_I6(x0)) t = t + 7
if (check_is_I7(x0)) t = t + 8
if (check_is_I8(x0)) t = t + 9
if (check_is_I9(x0)) t = t + 10
if (check_is_I10(x0)) t = t + 11
if (check_is_I11(x0)) t = t + 12
if (check_is_I12(x0)) t = t + 13
if (check_is_I13(x0)) t = t + 14
if (check_is_I14(x0)) t = t + 15
if (check_is_I15(x0)) t = t + 16
if (check_is_I16(x0)) t = t + 17
if (check_is_I17(x0)) t = t + 18
if (check_is_I18(x0)) t = t + 19
if (check_is_I19(x0)) t = t + 20
if (check_is_I20(x0)) t = t + 21
if (check_is_I21(x0)) t = t + 22
if (check_is_I22(x0)) t = t + 23
if (check_is_I23(x0)) t = t + 24
if (check_is_I24(x0)) t = t + 25
if (check_is_I25(x0)) t = t + 26
if (check_is_I26(x0)) t = t + 27
if (check_is_I27(x0)) t = t + 28
if (check_is_I28(x0)) t = t + 29
if (check_is_I29(x0)) t = t + 30
if (check_is_I30(x0)) t = t + 31
if (check_is_I31(x0)) t = t + 32
if (check_is_I32(x0)) t = t + 33
if (check_is_I33(x0)) t = t + 34
if (check_is_I34(x0)) t = t + 35
if (check_is_I35(x0)) t = t + 36
if (check_is_I36(x0)) t = t + 37
if (check_is_I37(x0)) t = t + 38
if (check_is_I38(x0)) t = t + 39
if (check_is_I39(x0)) t = t + 40
if (check_is_I40(x0)) t = t + 41
if (check_is_I41(x0)) t = t + 42
if (check_is_I42(x0)) t = t + 43
if (check_is_I43(x0)) t = t + 44
if (check_is_I44(x0)) t = t + 45
if (check_is_I45(x0)) t = t + 46
if (check_is_I46(x0)) t = t + 47
if (check_is_I47(x0)) t = t + 48
if (check_is_I48(x0)) t = t + 49
if (check_is_I49(x0)) t = t + 50
if (check_is_I50(x0)) t = t + 51
if (check_is_I51(x0)) t = t + 52
if (check_is_I52(x0)) t = t + 53
if (check_is_I53(x0)) t = t + 54
if (check_is_I54(x0)) t = t + 55
if (check_is_I55(x0)) t = t + 56
if (check_is_I56(x0)) t = t + 57
if (check_is_I57(x0)) t = t + 58
if (check_is_I58(x0)) t = t + 59
if (check_is_I59(x0)) t = t + 60
if (check_is_I60(x0)) t = t + 61
if (check_is_I61(x0)) t = t + 62
if (check_is_I62(x0)) t = t + 63
if (check_is_I63(x0)) t = t + 64
if (check_is_I64(x0)) t = t + 65
if (check_is_I65(x0)) t = t + 66
if (check_is_I66(x0)) t = t + 67
if (check_is_I67(x0)) t = t + 68
if (check_is_I68(x0)) t = t + 69
if (check_is_I69(x0)) t = t + 70
if (check_is_I70(x0)) t = t + 71
if (check_is_I71(x0)) t = t + 72
if (check_is_I72(x0)) t = t + 73
if (check_is_I73(x0)) t = t + 74
if (check_is_I74(x0)) t = t + 75
if (check_is_I75(x0)) t = t + 76
if (check_is_I76(x0)) t = t + 77
if (check_is_I77(x0)) t = t + 78
if (check_is_I78(x0)) t = t + 79
if (check_is_I79(x0)) t = t + 80
if (check_is_I80(x0)) t = t + 81
if (check_is_I81(x0)) t = t + 82
if (check_is_I82(x0)) t = t + 83
if (check_is_I83(x0)) t = t + 84
if (check_is_I84(x0)) t = t + 85
if (check_is_I85(x0)) t = t + 86
if (check_is_I86(x0)) t = t + 87
if (check_is_I87(x0)) t = t + 88
if (check_is_I88(x0)) t = t + 89
if (check_is_I89(x0)) t = t + 90
if (check_is_I90(x0)) t = t + 91
if (check_is_I91(x0)) t = t + 92
if (check_is_I92(x0)) t = t + 93
if (check_is_I93(x0)) t = t + 94
if (check_is_I94(x0)) t = t + 95
if (check_is_I95(x0)) t = t + 96
if (check_is_I96(x0)) t = t + 97
if (check_is_I97(x0)) t = t + 98
if (check_is_I98(x0)) t = t + 99
if (check_is_I99(x0)) t = t + 100
assertEquals(5050, t)
val x1 = I42_Impl1()
val x2 = I42_Impl2()
val x3 = I42_Impl3()
val x4 = I42_Impl4()
val x5 = I42_Impl5()
val x6 = I42_Impl6()
val x7 = I42_Impl7()
val x8 = I42_Impl8()
t = foo(x0, 1)
t = foo(x1, t)
t = foo(x2, t)
t = foo(x3, t)
t = foo(x4, t)
t = foo(x5, t)
t = foo(x6, t)
t = foo(x7, t)
t = foo(x8, t)
assertEquals(26551140, t)
return "OK"
}