From 23d7f94dca6ba61083c5ce8afcad0fbfb5713566 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Mon, 6 Dec 2021 19:21:09 +0300 Subject: [PATCH] [JS IR] Generate JS Klib ABI tests - add first test --- .../removeClassAsParameterType/lib1/l1.kt | 4 ++ .../removeClassAsParameterType/lib1/l1.kt.1 | 3 + .../lib1/module.info | 6 ++ .../removeClassAsParameterType/lib2/l2.kt | 10 ++++ .../lib2/module.info | 2 + .../removeClassAsParameterType/main/m.kt | 19 +++++++ .../main/module.info | 2 + .../removeClassAsParameterType/project.info | 7 +++ .../removeClassAsReturnType/lib1/l1.kt | 8 +++ .../removeClassAsReturnType/lib1/l1.kt.1 | 4 ++ .../removeClassAsReturnType/lib1/module.info | 6 ++ .../removeClassAsReturnType/lib2/l2.kt | 10 ++++ .../removeClassAsReturnType/lib2/module.info | 2 + .../klibABI/removeClassAsReturnType/main/m.kt | 19 +++++++ .../removeClassAsReturnType/main/module.info | 2 + .../removeClassAsReturnType/project.info | 7 +++ .../removeClassAsSuperTypeArgument/lib1/l1.kt | 8 +++ .../lib1/l1.kt.1 | 4 ++ .../lib1/module.info | 6 ++ .../removeClassAsSuperTypeArgument/lib2/l2.kt | 20 +++++++ .../lib2/module.info | 2 + .../removeClassAsSuperTypeArgument/main/m.kt | 19 +++++++ .../main/module.info | 2 + .../project.info | 7 +++ .../removeClassAsTypeArgument/lib1/l1.kt | 8 +++ .../removeClassAsTypeArgument/lib1/l1.kt.1 | 4 ++ .../lib1/module.info | 6 ++ .../removeClassAsTypeArgument/lib2/l2.kt | 16 ++++++ .../lib2/module.info | 2 + .../removeClassAsTypeArgument/main/m.kt | 19 +++++++ .../main/module.info | 2 + .../removeClassAsTypeArgument/project.info | 7 +++ .../klibABI/removeFunction/lib1/l1.kt | 5 ++ .../klibABI/removeFunction/lib1/l1.kt.1 | 3 + .../klibABI/removeFunction/lib1/module.info | 6 ++ .../klibABI/removeFunction/lib2/l2.kt | 2 + .../klibABI/removeFunction/lib2/module.info | 2 + .../testData/klibABI/removeFunction/main/m.kt | 16 ++++++ .../klibABI/removeFunction/main/module.info | 2 + .../klibABI/removeFunction/project.info | 7 +++ .../generators/tests/GenerateJsTests.kt | 6 ++ .../js/test/JsKLibABITestCaseGenerated.java | 57 +++++++++++++++++++ 42 files changed, 349 insertions(+) create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/lib1/module.info create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/lib2/l2.kt create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/lib2/module.info create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/main/m.kt create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/main/module.info create mode 100644 compiler/testData/klibABI/removeClassAsParameterType/project.info create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/lib1/module.info create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/lib2/module.info create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/main/m.kt create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/main/module.info create mode 100644 compiler/testData/klibABI/removeClassAsReturnType/project.info create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/module.info create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/l2.kt create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/module.info create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/m.kt create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/module.info create mode 100644 compiler/testData/klibABI/removeClassAsSuperTypeArgument/project.info create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/lib1/module.info create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/lib2/l2.kt create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/lib2/module.info create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/main/m.kt create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/main/module.info create mode 100644 compiler/testData/klibABI/removeClassAsTypeArgument/project.info create mode 100644 compiler/testData/klibABI/removeFunction/lib1/l1.kt create mode 100644 compiler/testData/klibABI/removeFunction/lib1/l1.kt.1 create mode 100644 compiler/testData/klibABI/removeFunction/lib1/module.info create mode 100644 compiler/testData/klibABI/removeFunction/lib2/l2.kt create mode 100644 compiler/testData/klibABI/removeFunction/lib2/module.info create mode 100644 compiler/testData/klibABI/removeFunction/main/m.kt create mode 100644 compiler/testData/klibABI/removeFunction/main/module.info create mode 100644 compiler/testData/klibABI/removeFunction/project.info create mode 100644 js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABITestCaseGenerated.java diff --git a/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt b/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt new file mode 100644 index 00000000000..43ec2dd1bcb --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt @@ -0,0 +1,4 @@ + +class C + +class E \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt.1 b/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt.1 new file mode 100644 index 00000000000..2f3e3fdb38d --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/lib1/l1.kt.1 @@ -0,0 +1,3 @@ + + +class C \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/lib1/module.info b/compiler/testData/klibABI/removeClassAsParameterType/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/removeClassAsParameterType/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsParameterType/lib2/l2.kt new file mode 100644 index 00000000000..46687e30fe5 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/lib2/l2.kt @@ -0,0 +1,10 @@ + + + +class D { + fun foo(): String = stable(C()) + fun stable(c: C): String = "K" + + fun bar(): String = exp(E()) + fun exp(e: E): String = "FAIL1" +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/lib2/module.info b/compiler/testData/klibABI/removeClassAsParameterType/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/main/m.kt b/compiler/testData/klibABI/removeClassAsParameterType/main/m.kt new file mode 100644 index 00000000000..6344bc0c9ca --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/main/m.kt @@ -0,0 +1,19 @@ + +fun test1(d: D): String { + try { + d.bar() + } catch(ex: Throwable) { + return "O" + } + + return "FAIL2" +} + +fun test2(d: D): String { + return d.foo() +} + + +fun box(): String { + return test1(D()) + test2(D()) +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/main/module.info b/compiler/testData/klibABI/removeClassAsParameterType/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsParameterType/project.info b/compiler/testData/klibABI/removeClassAsParameterType/project.info new file mode 100644 index 00000000000..2147306d715 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsParameterType/project.info @@ -0,0 +1,7 @@ +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt b/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt new file mode 100644 index 00000000000..5331a7cfadc --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt @@ -0,0 +1,8 @@ + +class C { + fun o(): String = "K" +} + +class E { + fun e(): String = "FAIL" +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt.1 b/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt.1 new file mode 100644 index 00000000000..3f6b66bda3f --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/lib1/l1.kt.1 @@ -0,0 +1,4 @@ + +class C { + fun o(): String = "K" +} diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib1/module.info b/compiler/testData/klibABI/removeClassAsReturnType/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt new file mode 100644 index 00000000000..c2b2e1e6eb7 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/lib2/l2.kt @@ -0,0 +1,10 @@ + + + +class D { + fun foo(): String = stable().o() + fun stable(): C = C() + + fun bar(): String = exp().e() + fun exp(): E = E() +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/lib2/module.info b/compiler/testData/klibABI/removeClassAsReturnType/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt b/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt new file mode 100644 index 00000000000..6344bc0c9ca --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/main/m.kt @@ -0,0 +1,19 @@ + +fun test1(d: D): String { + try { + d.bar() + } catch(ex: Throwable) { + return "O" + } + + return "FAIL2" +} + +fun test2(d: D): String { + return d.foo() +} + + +fun box(): String { + return test1(D()) + test2(D()) +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/main/module.info b/compiler/testData/klibABI/removeClassAsReturnType/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsReturnType/project.info b/compiler/testData/klibABI/removeClassAsReturnType/project.info new file mode 100644 index 00000000000..2147306d715 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsReturnType/project.info @@ -0,0 +1,7 @@ +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt new file mode 100644 index 00000000000..5331a7cfadc --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt @@ -0,0 +1,8 @@ + +class C { + fun o(): String = "K" +} + +class E { + fun e(): String = "FAIL" +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt.1 b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt.1 new file mode 100644 index 00000000000..3f6b66bda3f --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/l1.kt.1 @@ -0,0 +1,4 @@ + +class C { + fun o(): String = "K" +} diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/module.info b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/l2.kt new file mode 100644 index 00000000000..db2fa447922 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/l2.kt @@ -0,0 +1,20 @@ + +interface I { + val o: T +} + +class ST : I { + override val o: C = C() +} + +class EX: I { + override val o: E = E() +} + +class D { + fun foo(): String = stable().o.o() + fun stable(): ST = ST() + + fun bar(): String = exp().o.e() + fun exp(): EX = EX() +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/module.info b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/m.kt b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/m.kt new file mode 100644 index 00000000000..6344bc0c9ca --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/m.kt @@ -0,0 +1,19 @@ + +fun test1(d: D): String { + try { + d.bar() + } catch(ex: Throwable) { + return "O" + } + + return "FAIL2" +} + +fun test2(d: D): String { + return d.foo() +} + + +fun box(): String { + return test1(D()) + test2(D()) +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/module.info b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsSuperTypeArgument/project.info b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/project.info new file mode 100644 index 00000000000..2147306d715 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsSuperTypeArgument/project.info @@ -0,0 +1,7 @@ +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt new file mode 100644 index 00000000000..5331a7cfadc --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt @@ -0,0 +1,8 @@ + +class C { + fun o(): String = "K" +} + +class E { + fun e(): String = "FAIL" +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt.1 b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt.1 new file mode 100644 index 00000000000..3f6b66bda3f --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/l1.kt.1 @@ -0,0 +1,4 @@ + +class C { + fun o(): String = "K" +} diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/module.info b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/l2.kt b/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/l2.kt new file mode 100644 index 00000000000..316cff43128 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/l2.kt @@ -0,0 +1,16 @@ + +interface I { + val o: T +} + +class D { + fun foo(): String = stable().o.o() + fun stable(): I = object : I { + override val o: C = C() + } + + fun bar(): String = exp().o.e() + fun exp(): I = object : I { + override val o: E = E() + } +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/module.info b/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/main/m.kt b/compiler/testData/klibABI/removeClassAsTypeArgument/main/m.kt new file mode 100644 index 00000000000..6344bc0c9ca --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/main/m.kt @@ -0,0 +1,19 @@ + +fun test1(d: D): String { + try { + d.bar() + } catch(ex: Throwable) { + return "O" + } + + return "FAIL2" +} + +fun test2(d: D): String { + return d.foo() +} + + +fun box(): String { + return test1(D()) + test2(D()) +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/main/module.info b/compiler/testData/klibABI/removeClassAsTypeArgument/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeClassAsTypeArgument/project.info b/compiler/testData/klibABI/removeClassAsTypeArgument/project.info new file mode 100644 index 00000000000..2147306d715 --- /dev/null +++ b/compiler/testData/klibABI/removeClassAsTypeArgument/project.info @@ -0,0 +1,7 @@ +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/lib1/l1.kt b/compiler/testData/klibABI/removeFunction/lib1/l1.kt new file mode 100644 index 00000000000..10a731012f4 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/lib1/l1.kt @@ -0,0 +1,5 @@ + + +fun foo(): String = "FAIL1" + +fun exp_foo() = "FAIL2" \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/lib1/l1.kt.1 b/compiler/testData/klibABI/removeFunction/lib1/l1.kt.1 new file mode 100644 index 00000000000..39c9a4e810e --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/lib1/l1.kt.1 @@ -0,0 +1,3 @@ + + +fun foo(): String = "K" \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/lib1/module.info b/compiler/testData/klibABI/removeFunction/lib1/module.info new file mode 100644 index 00000000000..99edefccd79 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/lib1/module.info @@ -0,0 +1,6 @@ +STEP 0: + dependencies: stdlib +STEP 1: + dependencies: stdlib + modifications: + U : l1.kt.1 -> l1.kt diff --git a/compiler/testData/klibABI/removeFunction/lib2/l2.kt b/compiler/testData/klibABI/removeFunction/lib2/l2.kt new file mode 100644 index 00000000000..e1961961861 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/lib2/l2.kt @@ -0,0 +1,2 @@ + +fun qux(exp: Boolean): String = if (exp) exp_foo() else foo() \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/lib2/module.info b/compiler/testData/klibABI/removeFunction/lib2/module.info new file mode 100644 index 00000000000..391aab979a6 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/lib2/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/main/m.kt b/compiler/testData/klibABI/removeFunction/main/m.kt new file mode 100644 index 00000000000..4d3d948dae3 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/main/m.kt @@ -0,0 +1,16 @@ + +fun test1(): String { + try { + return qux(true) + } catch(ex: Throwable) { + return "O" + } + + return "FAIL2" +} + +fun test2(): String = qux(false) + +fun box(): String { + return test1() + test2() +} \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/main/module.info b/compiler/testData/klibABI/removeFunction/main/module.info new file mode 100644 index 00000000000..62f7f4fab07 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/main/module.info @@ -0,0 +1,2 @@ +STEP 0: + dependencies: stdlib, lib1, lib2 \ No newline at end of file diff --git a/compiler/testData/klibABI/removeFunction/project.info b/compiler/testData/klibABI/removeFunction/project.info new file mode 100644 index 00000000000..2147306d715 --- /dev/null +++ b/compiler/testData/klibABI/removeFunction/project.info @@ -0,0 +1,7 @@ +MODULES: lib1, lib2, main + +STEP 0: + libs: lib1, lib2, main + +STEP 1: + libs: lib1 \ No newline at end of file diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index 8f31fae21c5..477edfe2f0f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -47,6 +47,12 @@ fun main(args: Array) { } } + testGroup("js/js.tests/tests-gen", "compiler/testData") { + testClass { + model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false, ) + } + } + testGroup("js/js.tests/tests-gen", "js/js.translator/testData") { testClass { model("incremental/invalidation/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false) diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABITestCaseGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABITestCaseGenerated.java new file mode 100644 index 00000000000..c5fbeed3d28 --- /dev/null +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/JsKLibABITestCaseGenerated.java @@ -0,0 +1,57 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.js.test; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/klibABI") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class JsKLibABITestCaseGenerated extends AbstractJsKLibABITestCase { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JS_IR, testDataFilePath); + } + + public void testAllFilesPresentInKlibABI() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false); + } + + @TestMetadata("removeClassAsParameterType") + public void testRemoveClassAsParameterType() throws Exception { + runTest("compiler/testData/klibABI/removeClassAsParameterType/"); + } + + @TestMetadata("removeClassAsReturnType") + public void testRemoveClassAsReturnType() throws Exception { + runTest("compiler/testData/klibABI/removeClassAsReturnType/"); + } + + @TestMetadata("removeClassAsSuperTypeArgument") + public void testRemoveClassAsSuperTypeArgument() throws Exception { + runTest("compiler/testData/klibABI/removeClassAsSuperTypeArgument/"); + } + + @TestMetadata("removeClassAsTypeArgument") + public void testRemoveClassAsTypeArgument() throws Exception { + runTest("compiler/testData/klibABI/removeClassAsTypeArgument/"); + } + + @TestMetadata("removeFunction") + public void testRemoveFunction() throws Exception { + runTest("compiler/testData/klibABI/removeFunction/"); + } +}