[Tests] Migrate backend-independent tests from native to compiler/testData.
^KT-65979
This commit is contained in:
committed by
Space Team
parent
dd9332d9e1
commit
febac0dd5f
@@ -0,0 +1,9 @@
|
||||
MODULE lib
|
||||
CLASS foo/bar/LibKt.class
|
||||
PACKAGE METADATA
|
||||
PROPERTY getSb()Ljava/lang/StringBuilder;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
java/lang/StringBuilder /* = kotlin/text/StringBuilder^ */
|
||||
K2
|
||||
java/lang/StringBuilder
|
||||
@@ -0,0 +1,145 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63864
|
||||
// KT-54635: Kotlin/JS cannot distinguish between Int and Double at runtime
|
||||
// Expected: types third level 1.0
|
||||
// Actual: types third level 1
|
||||
// IGNORE_BACKEND: JS_IR, JS_IR_ES6
|
||||
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
package foo.bar
|
||||
|
||||
val sb = StringBuilder()
|
||||
|
||||
class R<T> {
|
||||
inline fun bar(t: T) {
|
||||
sb.appendLine("just a single class: $t")
|
||||
}
|
||||
}
|
||||
|
||||
class C {
|
||||
inline fun foo() {
|
||||
sb.appendLine("first level")
|
||||
}
|
||||
|
||||
class D {
|
||||
inline fun foo() {
|
||||
sb.appendLine("second level")
|
||||
}
|
||||
|
||||
class E {
|
||||
inline fun foo() {
|
||||
sb.appendLine("third levelxz")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class C2 {
|
||||
inline fun foo() {
|
||||
sb.appendLine("inner first level")
|
||||
}
|
||||
|
||||
inner class D2 {
|
||||
inline fun foo() {
|
||||
sb.appendLine("inner second level")
|
||||
}
|
||||
|
||||
inner class E2 {
|
||||
inline fun foo() {
|
||||
sb.appendLine("inner third level")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class C3<X> {
|
||||
inline fun foo(x: X) {
|
||||
sb.appendLine("types first level: $x")
|
||||
}
|
||||
|
||||
class D3<X> {
|
||||
inline fun foo(x: X) {
|
||||
sb.appendLine("types second level $x")
|
||||
}
|
||||
|
||||
class E3<X> {
|
||||
inline fun foo(x: X) {
|
||||
sb.appendLine("types third level $x")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class C4<X> {
|
||||
inline fun foo(x: X) {
|
||||
sb.appendLine("inner types first level: $x")
|
||||
}
|
||||
|
||||
inner class D4<Y> {
|
||||
inline fun foo(x: X, y: Y) {
|
||||
sb.appendLine("inner types second level $x, $y")
|
||||
}
|
||||
|
||||
inner class E4<Z> {
|
||||
inline fun foo(x: X, y: Y, z: Z) {
|
||||
sb.appendLine("inner types third level $x, $y, $z")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
import foo.bar.*
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
val c = C()
|
||||
val d = C.D()
|
||||
val e = C.D.E()
|
||||
c.foo()
|
||||
d.foo()
|
||||
e.foo()
|
||||
|
||||
val c2 = C2()
|
||||
val d2 = C2().D2()
|
||||
val e2 = C2().D2().E2()
|
||||
c2.foo()
|
||||
d2.foo()
|
||||
e2.foo()
|
||||
|
||||
val c3 = C3<Int>()
|
||||
val d3 = C3.D3<String>()
|
||||
val e3 = C3.D3.E3<Float>()
|
||||
c3.foo(13)
|
||||
d3.foo("cha-cha-cha")
|
||||
e3.foo(1.0f)
|
||||
|
||||
val c4 = C4<Int>()
|
||||
val d4 = C4<String>().D4<Int>()
|
||||
val e4 = C4<Int>().D4<String>().E4<Int>()
|
||||
c4.foo(13)
|
||||
d4.foo("cawabunga", 17)
|
||||
e4.foo(19, "raqa-taqa", 23)
|
||||
|
||||
assertEquals("""
|
||||
first level
|
||||
second level
|
||||
third levelxz
|
||||
inner first level
|
||||
inner second level
|
||||
inner third level
|
||||
types first level: 13
|
||||
types second level cha-cha-cha
|
||||
types third level 1.0
|
||||
inner types first level: 13
|
||||
inner types second level cawabunga, 17
|
||||
inner types third level 19, raqa-taqa, 23
|
||||
|
||||
""".trimIndent(), sb.toString())
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
inline fun foo(): String {
|
||||
try {
|
||||
try {
|
||||
throw Exception("O")
|
||||
} catch (e: Throwable) {
|
||||
throw Exception("${e.message}K")
|
||||
}
|
||||
} catch (e: Throwable) {
|
||||
return e.message!!
|
||||
}
|
||||
return "FAIL"
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
fun box() = foo()
|
||||
@@ -0,0 +1,15 @@
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
inline fun foo(x: Char = '\u042b') = x
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
assertEquals('\u042b', foo())
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
inline val Int.prop get() = SomeDataClass(second = this)
|
||||
|
||||
data class SomeDataClass(val first: Int = 17, val second: Int = 19, val third: Int = 23)
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(SomeDataClass(first = 17, second = 666, third = 23), 666.prop)
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
MODULE lib
|
||||
CLASS LibKt.class
|
||||
PACKAGE METADATA
|
||||
PROPERTY getSb()Ljava/lang/StringBuilder;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
java/lang/StringBuilder /* = kotlin/text/StringBuilder^ */
|
||||
K2
|
||||
java/lang/StringBuilder
|
||||
@@ -0,0 +1,21 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63864
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
val sb = StringBuilder()
|
||||
|
||||
inline fun foo() {
|
||||
do {
|
||||
var x: Int = 999
|
||||
sb.append("OK")
|
||||
} while (x != 999)
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
fun box(): String {
|
||||
foo()
|
||||
return sb.toString()
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
enum class Color {
|
||||
RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW
|
||||
}
|
||||
|
||||
fun determineColor(code: Int): Color = when (code) {
|
||||
0 -> Color.BLUE
|
||||
1 -> Color.MAGENTA
|
||||
else -> Color.CYAN
|
||||
}
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
assertEquals(0, Color.RED.ordinal)
|
||||
assertEquals(1, Color.GREEN.ordinal)
|
||||
assertEquals(2, Color.BLUE.ordinal)
|
||||
assertEquals(Color.BLUE, determineColor(0))
|
||||
assertEquals(Color.MAGENTA, determineColor(1))
|
||||
assertEquals(Color.CYAN, determineColor(2))
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
MODULE lib
|
||||
CLASS LibKt.class
|
||||
PACKAGE METADATA
|
||||
PROPERTY getSb()Ljava/lang/StringBuilder;
|
||||
Property: class.metadata.property.returnType
|
||||
K1
|
||||
java/lang/StringBuilder /* = kotlin/text/StringBuilder^ */
|
||||
K2
|
||||
java/lang/StringBuilder
|
||||
@@ -0,0 +1,34 @@
|
||||
// JVM_ABI_K1_K2_DIFF: KT-63864
|
||||
// WITH_STDLIB
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
val sb = StringBuilder()
|
||||
|
||||
fun bar(vararg x: Int) {
|
||||
x.forEach {
|
||||
sb.appendLine(it)
|
||||
}
|
||||
sb.appendLine("size: ${x.size}")
|
||||
}
|
||||
|
||||
inline fun foo() = bar(17, 19, 23, *intArrayOf(29, 31))
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
foo()
|
||||
assertEquals("""
|
||||
17
|
||||
19
|
||||
23
|
||||
29
|
||||
31
|
||||
size: 5
|
||||
|
||||
""".trimIndent(), sb.toString())
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user