From 9f67fe2fe3cb6beafccf751986b62001a8152355 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 29 Feb 2016 13:36:16 +0300 Subject: [PATCH] Adapt CompileKotlinAgainstKotlin test to black box format Rename/remove some obsolete test cases --- ...ionInTrait.kt => annotationInInterface.kt} | 5 +- .../callsToMultifileClassFromOtherPackage.kt | 11 +++-- .../classInObject.kt | 7 ++- ...jectInEnum.kt => companionObjectInEnum.kt} | 4 +- ...jectMember.kt => companionObjectMember.kt} | 6 +-- ...onstPropertyReferenceFromMultifileClass.kt | 4 +- .../constructorVararg.kt | 9 ++-- .../defaultConstructor.kt | 3 +- .../doublyNestedClass.kt | 6 +-- .../compileKotlinAgainstKotlin/enum.kt | 5 +- .../importObject.kt | 17 ------- .../inlinedConstants.kt | 3 +- .../innerClassConstructor.kt | 3 +- .../compileKotlinAgainstKotlin/jvmField.kt | 3 +- .../jvmFieldInConstructor.kt | 3 +- .../jvmNameOnAccessor.kt | 12 ----- .../{platformNames.kt => jvmNames.kt} | 13 +++-- .../jvmStaticInObject.kt | 16 +++++++ .../kotlinPropertyAsAnnotationParameter.kt | 3 +- ...ileClassInlineFunctionAccessingProperty.kt | 5 +- .../compileKotlinAgainstKotlin/nestedClass.kt | 9 ++-- .../compileKotlinAgainstKotlin/nestedEnum.kt | 7 +-- .../nestedObject.kt | 9 ++-- .../platformStaticInObject.kt | 21 -------- .../platformTypes.kt | 4 +- .../propertyReference.kt | 10 ++-- .../recursiveGeneric.kt | 5 +- .../secondaryConstructors.kt | 15 +++--- .../compileKotlinAgainstKotlin/simple.kt | 3 +- .../simpleValAnonymousObject.kt | 4 +- .../starImportEnum.kt | 7 +-- ...actCompileKotlinAgainstInlineKotlinTest.kt | 22 +-------- ...bstractCompileKotlinAgainstKotlinTest.java | 33 +++++++++---- ...mpileKotlinAgainstKotlinTestGenerated.java | 48 +++++++------------ 34 files changed, 152 insertions(+), 183 deletions(-) rename compiler/testData/compileKotlinAgainstKotlin/{annotationInTrait.kt => annotationInInterface.kt} (81%) rename compiler/testData/compileKotlinAgainstKotlin/{classObjectInEnum.kt => companionObjectInEnum.kt} (66%) rename compiler/testData/compileKotlinAgainstKotlin/{classObjectMember.kt => companionObjectMember.kt} (51%) delete mode 100644 compiler/testData/compileKotlinAgainstKotlin/importObject.kt delete mode 100644 compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt rename compiler/testData/compileKotlinAgainstKotlin/{platformNames.kt => jvmNames.kt} (56%) create mode 100644 compiler/testData/compileKotlinAgainstKotlin/jvmStaticInObject.kt delete mode 100644 compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt diff --git a/compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt b/compiler/testData/compileKotlinAgainstKotlin/annotationInInterface.kt similarity index 81% rename from compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt rename to compiler/testData/compileKotlinAgainstKotlin/annotationInInterface.kt index a8f3939dab6..f0eb6f77211 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/annotationInInterface.kt @@ -14,10 +14,11 @@ interface Tr { class C : a.Tr -fun main(args: Array) { +fun box(): String { val method = C::class.java.getDeclaredMethod("foo") val annotations = method.getDeclaredAnnotations().joinToString("\n") if (annotations != "@a.Ann()") { - throw AssertionError(annotations) + return "Fail: $annotations" } + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/callsToMultifileClassFromOtherPackage.kt b/compiler/testData/compileKotlinAgainstKotlin/callsToMultifileClassFromOtherPackage.kt index 810fe413cfd..6b043253f4c 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/callsToMultifileClassFromOtherPackage.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/callsToMultifileClassFromOtherPackage.kt @@ -12,10 +12,11 @@ var varOK: String = "Hmmm?" import a.* -fun main(args: Array) { - if (foo() != "OK") throw AssertionError("Fail function") - if (constOK != "OK") throw AssertionError("Fail const") - if (valOK != "OK") throw AssertionError("Fail val") +fun box(): String { + if (foo() != "OK") return "Fail function" + if (constOK != "OK") return "Fail const" + if (valOK != "OK") return "Fail val" varOK = "OK" - if (varOK != "OK") throw AssertionError("Fail var") + if (varOK != "OK") return "Fail var" + return varOK } diff --git a/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt b/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt index efe16e525ec..28cf854a951 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt @@ -3,13 +3,16 @@ package a object CartRoutes { - class RemoveOrderItem() + class RemoveOrderItem { + val result = "OK" + } } // FILE: B.kt import a.CartRoutes -fun main(args: Array) { +fun box(): String { val r = CartRoutes.RemoveOrderItem() + return r.result } diff --git a/compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt b/compiler/testData/compileKotlinAgainstKotlin/companionObjectInEnum.kt similarity index 66% rename from compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt rename to compiler/testData/compileKotlinAgainstKotlin/companionObjectInEnum.kt index 9d757afca54..23b2ba03385 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/companionObjectInEnum.kt @@ -14,6 +14,6 @@ public enum class EnumClass { import library.EnumClass -fun main(args: Array) { - if (EnumClass.entry() != EnumClass.ENTRY) throw AssertionError() +fun box(): String { + return if (EnumClass.entry() != EnumClass.ENTRY) "Fail" else "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt b/compiler/testData/compileKotlinAgainstKotlin/companionObjectMember.kt similarity index 51% rename from compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt rename to compiler/testData/compileKotlinAgainstKotlin/companionObjectMember.kt index 198fb6fa962..deda85e7ded 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/companionObjectMember.kt @@ -9,7 +9,7 @@ class A { // FILE: B.kt -fun main(args: Array) { - if (A.foo() != 42) throw Exception() - if (A.bar != "OK") throw Exception() +fun box(): String { + if (A.foo() != 42) return "Fail foo" + return A.bar } diff --git a/compiler/testData/compileKotlinAgainstKotlin/constPropertyReferenceFromMultifileClass.kt b/compiler/testData/compileKotlinAgainstKotlin/constPropertyReferenceFromMultifileClass.kt index 98b1a8aa42b..732b9199a68 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/constPropertyReferenceFromMultifileClass.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/constPropertyReferenceFromMultifileClass.kt @@ -12,7 +12,7 @@ const val OK: String = "OK" import a.OK -fun main(args: Array) { +fun box(): String { val okRef = ::OK // TODO: see KT-10892 @@ -23,5 +23,5 @@ fun main(args: Array) { // } val result = okRef.get() - if (result != "OK") throw AssertionError("Fail: $result") + return result } diff --git a/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt b/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt index c2886199cea..b618feba70e 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt @@ -6,8 +6,9 @@ class A(vararg s: String) { // FILE: B.kt -fun main(args: Array) { - A() - A("a") - A("a", "b") +fun box(): String { + A() + A("a") + A("a", "b") + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt b/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt index ded8642b491..8cbbab06504 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt @@ -6,6 +6,7 @@ class A(val a: Int = 1) // FILE: B.kt -fun main(args: Array) { +fun box(): String { aaa.A() + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt b/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt index bfb139ba349..12ceef419a4 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt @@ -12,9 +12,7 @@ class A { // FILE: B.kt -fun main(args: Array) { +fun box(): String { val str = aaa.A.B.O().s - if (str != "OK") { - throw Exception() - } + return str } diff --git a/compiler/testData/compileKotlinAgainstKotlin/enum.kt b/compiler/testData/compileKotlinAgainstKotlin/enum.kt index 24d0a24f2d7..aedb880cdbc 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/enum.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/enum.kt @@ -11,6 +11,7 @@ enum class E { import aaa.E -fun main(args: Array) { - if (E.TRIVIAL_ENTRY == E.SUBCLASS) throw AssertionError() +fun box(): String { + if (E.TRIVIAL_ENTRY == E.SUBCLASS) return "Fail" + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/importObject.kt b/compiler/testData/compileKotlinAgainstKotlin/importObject.kt deleted file mode 100644 index 1a74675a4cd..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/importObject.kt +++ /dev/null @@ -1,17 +0,0 @@ -// FILE: A.kt - -package some - -public object SOME_OBJECT { - -} - -// FILE: B.kt - -//This a test for blinking bug from KT-3124 - -import some.SOME_OBJECT - -fun main(args: Array) { - val a = SOME_OBJECT -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt b/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt index 0d92373dcc3..0d43895a580 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt @@ -23,10 +23,11 @@ import constants.* @AnnotationClass("$b $s $i $l $f $d $bb $c $str") class DummyClass() -fun main(args: Array) { +fun box(): String { val klass = DummyClass::class.java val annotationClass = AnnotationClass::class.java val annotation = klass.getAnnotation(annotationClass)!! val value = annotation.value require(value == "100 20000 2000000 2000000000000 3.14 3.14 true \u03c0 :)", { "Annotation value: $value" }) + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt b/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt index a73c2fd5509..410cc603f89 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt @@ -15,6 +15,7 @@ fun Outer.testExt() { Inner("test") } -fun main(args: Array) { +fun box(): String { Outer().testExt() + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt index e161d4b3956..2d6afa75ac1 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt @@ -18,6 +18,7 @@ open class C : B() { } } -fun main(args: Array) { +fun box(): String { C().test() + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt index 904a215af57..4e8d1009e59 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt @@ -14,6 +14,7 @@ open class C : B() { } } -fun main(args: Array) { +fun box(): String { C().test() + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt deleted file mode 100644 index 9b1f845ec7a..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt +++ /dev/null @@ -1,12 +0,0 @@ -// FILE: A.kt - -class A { - val OK: String = "OK" - @JvmName("OK") get -} - -// FILE: B.kt - -fun main(args: Array) { - if (A().OK != "OK") throw java.lang.AssertionError() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/platformNames.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmNames.kt similarity index 56% rename from compiler/testData/compileKotlinAgainstKotlin/platformNames.kt rename to compiler/testData/compileKotlinAgainstKotlin/jvmNames.kt index d447ae51fab..a9585e1d9ff 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/platformNames.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmNames.kt @@ -11,13 +11,20 @@ var v: Int = 1 @JvmName("vset") set +fun consumeInt(x: Int) {} + +class A { + val OK: String = "OK" + @JvmName("OK") get +} + // FILE: B.kt import lib.* -fun main(args: Array) { +fun box(): String { foo() - v = 1 - println(v) + consumeInt(v) + return A().OK } diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmStaticInObject.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmStaticInObject.kt new file mode 100644 index 00000000000..37e5d292a8f --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmStaticInObject.kt @@ -0,0 +1,16 @@ +// FILE: A.kt + +package aaa + +import kotlin.jvm.* + +public object TestObject { + @JvmStatic + public val test: String = "OK" +} + +// FILE: B.kt + +fun box(): String { + return aaa.TestObject.test +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt b/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt index 73f08615bcd..81c9bc9079f 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt @@ -45,8 +45,9 @@ annotation class Ann( val str: String ) -fun main(args: Array) { +fun box(): String { // Trigger annotation loading (MyClass1() as java.lang.Object).getClass().getAnnotations() (MyClass2() as java.lang.Object).getClass().getAnnotations() + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt b/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt index 052978a31bf..088cbdca1be 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt @@ -9,7 +9,6 @@ inline fun K(body: () -> String): String = // FILE: B.kt -fun main(args: Array) { - val ok = K { "O" } - if (ok != "OK") throw java.lang.AssertionError("Expected: OK, actual: $ok") +fun box(): String { + return K { "O" } } diff --git a/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt index 66f490749e8..52d14e6357d 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt @@ -4,15 +4,12 @@ package aaa class A { class O { - val s = "OK" + val s = "OK" } } // FILE: B.kt -fun main(args: Array) { - val str = aaa.A.O().s - if (str != "OK") { - throw Exception() - } +fun box(): String { + return aaa.A.O().s } diff --git a/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt index 00695a2c19e..678e8d191a0 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt @@ -4,15 +4,16 @@ package aaa class A { enum class E { - A + A } } // FILE: B.kt -fun main(args: Array) { +fun box(): String { val str = aaa.A.E.A if (str.toString() != "A") { - throw Exception() + return "Fail $str" } + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt index ce2d2dfb974..a338168c8fd 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt @@ -4,15 +4,12 @@ package aaa class A { object O { - val s = "OK" + val s = "OK" } } // FILE: B.kt -fun main(args: Array) { - val str = aaa.A.O.s - if (str != "OK") { - throw Exception() - } +fun box(): String { + return aaa.A.O.s } diff --git a/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt b/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt deleted file mode 100644 index 2245f8922aa..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt +++ /dev/null @@ -1,21 +0,0 @@ -// FILE: A.kt - -package aaa - -import kotlin.jvm.* - -public object TestObject { - - @JvmStatic - public val test: String = "test" - -} - -// FILE: B.kt - -fun main(args: Array) { - val h = aaa.TestObject.test - if (h != "test") { - throw Exception() - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt b/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt index b10e9b0b87b..d4c57583250 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt @@ -18,7 +18,7 @@ import test.* class Inv fun inv(t: T): Inv = Inv() -fun main(args: Array) { +fun box(): String { printStream().checkError() val p: Inv = inv(printStream()) val p1: Inv = inv(printStream()) @@ -31,4 +31,6 @@ fun main(args: Array) { a[0] = 1 val a1: Inv> = inv(a) val a2: Inv?> = inv(a) + + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt b/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt index 21ea240bc04..35bdea51241 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt @@ -11,15 +11,17 @@ public val String.extension: Long import a.* -fun main(args: Array) { +fun box(): String { val f = ::topLevel val x1 = f.get() - if (x1 != 42) throw AssertionError("Fail x1: $x1") + if (x1 != 42) return "Fail x1: $x1" f.set(239) val x2 = f.get() - if (x2 != 239) throw AssertionError("Fail x2: $x2") + if (x2 != 239) return "Fail x2: $x2" val g = String::extension val y1 = g.get("abcde") - if (y1 != 5L) throw AssertionError("Fail y1: $y1") + if (y1 != 5L) return "Fail y1: $y1" + + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt b/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt index f77cd5bdd1b..a635b2412c8 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt @@ -14,10 +14,11 @@ interface Super { import a.* -fun main(args: Array) { +fun box(): String { val declaredMethod = Super::class.java.getDeclaredMethod("foo", Rec::class.java) val genericString = declaredMethod.toGenericString() - if (genericString != "public abstract a.Rec a.Super.foo(a.Rec)") throw AssertionError(genericString) + if (genericString != "public abstract a.Rec a.Super.foo(a.Rec)") return "Fail: $genericString" + return "OK" } fun test(s: Super, p: Rec<*, *>) { diff --git a/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt b/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt index 9329c43e819..4fa277472d8 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt @@ -22,16 +22,17 @@ class B2 : A { constructor(x1: Int): super(x1.toLong()) {} } -fun main(args: Array) { +fun box(): String { val b1 = B1() - if (b1.prop != "123#abc") throw AssertionError("fail1: ${b1.prop}") + if (b1.prop != "123#abc") return "fail1: ${b1.prop}" val b2 = B1(456) - if (b2.prop != "123#abc") throw AssertionError("fail2: ${b2.prop}") - + if (b2.prop != "123#abc") return "fail2: ${b2.prop}" val b3 = B2("cde") - if (b3.prop != "cde#abc") throw AssertionError("fail3: ${b3.prop}") + if (b3.prop != "cde#abc") return "fail3: ${b3.prop}" val b4 = B2() - if (b4.prop != "empty#abc") throw AssertionError("fail4: ${b4.prop}") + if (b4.prop != "empty#abc") return "fail4: ${b4.prop}" val b5 = B2(789) - if (b5.prop != "789") throw AssertionError("fail5: ${b5.prop}") + if (b5.prop != "789") return "fail5: ${b5.prop}" + + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/simple.kt b/compiler/testData/compileKotlinAgainstKotlin/simple.kt index 0544eaeb478..2a74fe2aba4 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/simple.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/simple.kt @@ -6,9 +6,10 @@ fun hello() = 17 // FILE: B.kt -fun main(args: Array) { +fun box(): String { val h = aaa.hello() if (h != 17) { throw Exception() } + return "OK" } diff --git a/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt b/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt index b5a1e592b19..4d6fc957ea0 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt @@ -14,7 +14,7 @@ interface ClassA { import pkg.ClassA -fun main(args: Array) { +fun box(): String { val obj = ClassA.DEFAULT - obj.toString() + return obj.toString() } diff --git a/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt b/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt index dbe79e0db48..74d9dea8fa5 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt @@ -15,7 +15,8 @@ enum class E { import aaa.E.* -fun main(args: Array) { - if (TRIVIAL_ENTRY == SUBCLASS) throw AssertionError() - if (Nested().fortyTwo() != 42) throw AssertionError() +fun box(): String { + if (TRIVIAL_ENTRY == SUBCLASS) return "Fail 1" + if (Nested().fortyTwo() != 42) return "Fail 2" + return "OK" } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstInlineKotlinTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstInlineKotlinTest.kt index 54ca8e63883..66bf56c95a8 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstInlineKotlinTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstInlineKotlinTest.kt @@ -16,37 +16,19 @@ package org.jetbrains.kotlin.codegen -import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import java.io.File abstract class AbstractCompileKotlinAgainstInlineKotlinTest : AbstractCompileKotlinAgainstKotlinTest() { override fun doMultiFileTest(wholeFile: File, files: List, javaFilesDir: File?) { - val kotlinFiles = files.filter { it.name.endsWith(".kt") } - assert(kotlinFiles.size == 2) { "There should be exactly two files in this test" } - - var factory1: ClassFileFactory? = null - var factory2: ClassFileFactory? = null + val (factory1, factory2) = doTwoFileTest(files.filter { it.name.endsWith(".kt") }) try { - val (fileA, fileB) = kotlinFiles - factory1 = compileA(fileA.name, fileA.content) - factory2 = compileB(fileB.name, fileB.content) - invokeBox(PackagePartClassUtils.getFilePartShortName(File(fileB.name).name)) - val allGeneratedFiles = factory1.asList() + factory2.asList() - val sourceFiles = factory1.inputFiles + factory2.inputFiles InlineTestUtil.checkNoCallsToInline(allGeneratedFiles.filterClassFiles(), sourceFiles) SMAPTestUtil.checkSMAP(files, allGeneratedFiles.filterClassFiles()) } catch (e: Throwable) { - var result = "" - if (factory1 != null) { - result += "FIRST: \n\n" + factory1.createText() - } - if (factory2 != null) { - result += "\n\nSECOND: \n\n" + factory2.createText() - } - println(result) + println("FIRST:\n\n${factory1.createText()}\n\nSECOND:\n\n${factory2.createText()}") throw e } } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstKotlinTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstKotlinTest.java index f43b1144c58..5d0f8276b92 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstKotlinTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractCompileKotlinAgainstKotlinTest.java @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.codegen; import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer; -import com.intellij.util.ArrayUtil; +import kotlin.Pair; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.cli.common.modules.ModuleBuilder; @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.KotlinTestUtils; import org.jetbrains.kotlin.test.TestJdkKind; +import org.jetbrains.kotlin.utils.ExceptionUtilsKt; import java.io.File; import java.io.IOException; @@ -58,19 +59,31 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends CodegenTest @Override protected void doMultiFileTest(@NotNull File wholeFile, @NotNull List files, @Nullable File javaFilesDir) throws Exception { + assert javaFilesDir == null : ".java files are not supported yet in this test"; + doTwoFileTest(files); + } + + @NotNull + protected Pair doTwoFileTest(@NotNull List files) throws Exception { // Note that it may be beneficial to improve this test to handle many files, compiling them successively against all previous assert files.size() == 2 : "There should be exactly two files in this test"; TestFile fileA = files.get(0); TestFile fileB = files.get(1); - compileA(fileA.name, fileA.content); - compileB(fileB.name, fileB.content); - invokeMain(fileB.name); - } - - private void invokeMain(@NotNull String fileName) throws Exception { - String className = PackagePartClassUtils.getFilePartShortName(fileName); - Method main = createGeneratedClassLoader().loadClass(className).getMethod("main", String[].class); - main.invoke(null, new Object[] {ArrayUtil.EMPTY_STRING_ARRAY}); + ClassFileFactory factoryA = compileA(fileA.name, fileA.content); + ClassFileFactory factoryB = null; + try { + factoryB = compileB(fileB.name, fileB.content); + invokeBox(PackagePartClassUtils.getFilePartShortName(new File(fileB.name).getName())); + } + catch (Throwable e) { + String result = "FIRST: \n\n" + factoryA.createText(); + if (factoryB != null) { + result += "\n\nSECOND: \n\n" + factoryB.createText(); + } + System.out.println(result); + throw ExceptionUtilsKt.rethrow(e); + } + return new Pair(factoryA, factoryB); } protected void invokeBox(@NotNull String className) throws Exception { diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java index ebe86c8a695..4b8d40055e9 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/CompileKotlinAgainstKotlinTestGenerated.java @@ -35,9 +35,9 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/compileKotlinAgainstKotlin"), Pattern.compile("^(.+)\\.kt$"), true); } - @TestMetadata("annotationInTrait.kt") - public void testAnnotationInTrait() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt"); + @TestMetadata("annotationInInterface.kt") + public void testAnnotationInInterface() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/annotationInInterface.kt"); doTest(fileName); } @@ -53,15 +53,15 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl doTest(fileName); } - @TestMetadata("classObjectInEnum.kt") - public void testClassObjectInEnum() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt"); + @TestMetadata("companionObjectInEnum.kt") + public void testCompanionObjectInEnum() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/companionObjectInEnum.kt"); doTest(fileName); } - @TestMetadata("classObjectMember.kt") - public void testClassObjectMember() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt"); + @TestMetadata("companionObjectMember.kt") + public void testCompanionObjectMember() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/companionObjectMember.kt"); doTest(fileName); } @@ -95,12 +95,6 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl doTest(fileName); } - @TestMetadata("importObject.kt") - public void testImportObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/importObject.kt"); - doTest(fileName); - } - @TestMetadata("inlinedConstants.kt") public void testInlinedConstants() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt"); @@ -125,9 +119,15 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl doTest(fileName); } - @TestMetadata("jvmNameOnAccessor.kt") - public void testJvmNameOnAccessor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt"); + @TestMetadata("jvmNames.kt") + public void testJvmNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmNames.kt"); + doTest(fileName); + } + + @TestMetadata("jvmStaticInObject.kt") + public void testJvmStaticInObject() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmStaticInObject.kt"); doTest(fileName); } @@ -161,18 +161,6 @@ public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotl doTest(fileName); } - @TestMetadata("platformNames.kt") - public void testPlatformNames() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformNames.kt"); - doTest(fileName); - } - - @TestMetadata("platformStaticInObject.kt") - public void testPlatformStaticInObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt"); - doTest(fileName); - } - @TestMetadata("platformTypes.kt") public void testPlatformTypes() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt");