diff --git a/compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.A.kt b/compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.A.kt deleted file mode 100644 index 0b3af596196..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -package a - -@Retention(AnnotationRetention.RUNTIME) -annotation class Ann - -interface Tr { - @Ann - fun foo() {} -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassInObject.A.kt b/compiler/testData/compileKotlinAgainstKotlin/ClassInObject.A.kt deleted file mode 100644 index 3751a4ecfcd..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassInObject.A.kt +++ /dev/null @@ -1,5 +0,0 @@ -package a - -object CartRoutes { - class RemoveOrderItem() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.A.kt b/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.A.kt deleted file mode 100644 index 44c6cc2d014..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -package library - -public enum class EnumClass { - ENTRY; - - public companion object { - public fun entry(): EnumClass = ENTRY - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.B.kt b/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.B.kt deleted file mode 100644 index 16342e549b5..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.B.kt +++ /dev/null @@ -1,5 +0,0 @@ -import library.EnumClass - -fun main(args: Array) { - if (EnumClass.entry() != EnumClass.ENTRY) throw AssertionError() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.A.kt b/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.A.kt deleted file mode 100644 index a39361f316c..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -class A { - companion object { - fun foo() = 42 - val bar = "OK" - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.B.kt b/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.B.kt deleted file mode 100644 index 21c5e8cd412..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.B.kt +++ /dev/null @@ -1,4 +0,0 @@ -fun main(args: Array) { - if (A.foo() != 42) throw Exception() - if (A.bar != "OK") throw Exception() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.A.kt b/compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.A.kt deleted file mode 100644 index 03961d4fa8e..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.A.kt +++ /dev/null @@ -1,3 +0,0 @@ -class A(vararg s: String) { - -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.A.kt b/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.A.kt deleted file mode 100644 index 728fde868a3..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.A.kt +++ /dev/null @@ -1,3 +0,0 @@ -package aaa - -class A(val a: Int = 1) diff --git a/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.B.kt b/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.B.kt deleted file mode 100644 index cbd8358bec6..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.B.kt +++ /dev/null @@ -1,3 +0,0 @@ -fun main(args: Array) { - aaa.A() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.A.kt b/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.A.kt deleted file mode 100644 index ed2026e7465..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -package aaa - -class A { - class B { - class O { - val s = "OK" - } - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.B.kt b/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.B.kt deleted file mode 100644 index 47d981ab079..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.B.kt +++ /dev/null @@ -1,6 +0,0 @@ -fun main(args: Array) { - val str = aaa.A.B.O().s - if (str != "OK") { - throw Exception() - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/Enum.A.kt b/compiler/testData/compileKotlinAgainstKotlin/Enum.A.kt deleted file mode 100644 index f4e1bd50906..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/Enum.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -package aaa - -enum class E { - TRIVIAL_ENTRY, - SUBCLASS { } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ImportObject.A.kt b/compiler/testData/compileKotlinAgainstKotlin/ImportObject.A.kt deleted file mode 100644 index 63ef31c83eb..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/ImportObject.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -//This a test for blinking bug from KT-3124 -package some - -public object SOME_OBJECT { - -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.B.kt b/compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.B.kt deleted file mode 100644 index 74ee84228d8..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.B.kt +++ /dev/null @@ -1,12 +0,0 @@ -import constants.* - -@AnnotationClass("$b $s $i $l $f $d $bb $c $str") -class DummyClass() - -fun main(args: Array) { - 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" }) -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.A.kt b/compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.A.kt deleted file mode 100644 index 0bebf5453cb..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -//test for KT-3702 Inner class constructor cannot be invoked in override function with receiver -package second - -public class Outer() { - inner class Inner(test: String) -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.A.kt b/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.A.kt deleted file mode 100644 index b18518462d1..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.A.kt +++ /dev/null @@ -1,4 +0,0 @@ -class A { - val OK: String = "OK" - @JvmName("OK") get -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.B.kt b/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.B.kt deleted file mode 100644 index b03e296ba08..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.B.kt +++ /dev/null @@ -1,3 +0,0 @@ -fun main(args: Array) { - if (A().OK != "OK") throw java.lang.AssertionError() -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.A.kt b/compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.A.kt deleted file mode 100644 index 19d8fffa821..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.A.kt +++ /dev/null @@ -1,21 +0,0 @@ -package a - -const val i = 2 -const val s = 2.toShort() -const val f = 2.0.toFloat() -const val d = 2.0 -const val l = 2L -const val b = 2.toByte() -const val bool = true -const val c = 'c' -const val str = "str" - -const val i2 = i -const val s2 = s -const val f2 = f -const val d2 = d -const val l2 = l -const val b2 = b -const val bool2 = bool -const val c2 = c -const val str2 = str diff --git a/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.A.kt b/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.A.kt deleted file mode 100644 index 85a2e78cec4..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -@file:[JvmName("Test") JvmMultifileClass] - -val property = "K" - -inline fun K(body: () -> String): String = - body() + property diff --git a/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.B.kt b/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.B.kt deleted file mode 100644 index 7dcc8a09a07..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.B.kt +++ /dev/null @@ -1,4 +0,0 @@ -fun main(args: Array) { - val ok = K { "O" } - if (ok != "OK") throw java.lang.AssertionError("Expected: OK, actual: $ok") -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedClass.A.kt b/compiler/testData/compileKotlinAgainstKotlin/NestedClass.A.kt deleted file mode 100644 index 6a3ed2aabe0..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedClass.A.kt +++ /dev/null @@ -1,7 +0,0 @@ -package aaa - -class A { - class O { - val s = "OK" - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedEnum.A.kt b/compiler/testData/compileKotlinAgainstKotlin/NestedEnum.A.kt deleted file mode 100644 index 5a78c80b05d..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedEnum.A.kt +++ /dev/null @@ -1,7 +0,0 @@ -package aaa - -class A { - enum class E { - A - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedObject.A.kt b/compiler/testData/compileKotlinAgainstKotlin/NestedObject.A.kt deleted file mode 100644 index d80cbb09e23..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedObject.A.kt +++ /dev/null @@ -1,7 +0,0 @@ -package aaa - -class A { - object O { - val s = "OK" - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/PlatformNames.B.kt b/compiler/testData/compileKotlinAgainstKotlin/PlatformNames.B.kt deleted file mode 100644 index d4cac39505c..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformNames.B.kt +++ /dev/null @@ -1,8 +0,0 @@ -import lib.* - -fun main(args: Array) { - foo() - - v = 1 - println(v) -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.A.kt b/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.A.kt deleted file mode 100644 index b54563c1891..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.A.kt +++ /dev/null @@ -1,10 +0,0 @@ -package aaa - -import kotlin.jvm.* - -public object TestObject { - - @JvmStatic - public val test: String = "test" - -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.B.kt b/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.B.kt deleted file mode 100644 index b5ece9a0beb..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.B.kt +++ /dev/null @@ -1,6 +0,0 @@ -fun main(args: Array) { - val h = aaa.TestObject.test - if (h != "test") { - throw Exception() - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.A.kt b/compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.A.kt deleted file mode 100644 index 83efa6c513a..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.A.kt +++ /dev/null @@ -1,7 +0,0 @@ -package test - -import java.util.* - -fun printStream() = System.out -fun list() = Collections.emptyList() -fun array(a: Array) = Arrays.copyOf(a, 2) \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/PropertyReference.A.kt b/compiler/testData/compileKotlinAgainstKotlin/PropertyReference.A.kt deleted file mode 100644 index ea68a0dea53..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/PropertyReference.A.kt +++ /dev/null @@ -1,6 +0,0 @@ -package a - -public var topLevel: Int = 42 - -public val String.extension: Long - get() = length.toLong() diff --git a/compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.A.kt b/compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.A.kt deleted file mode 100644 index 15e0b1766fb..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -package a - -interface Rec> { - fun t(): T -} - -interface Super { - fun foo(p: Rec<*, *>) = p.t() -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.A.kt b/compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.A.kt deleted file mode 100644 index ff02a4a3207..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -open class A { - val prop: String - constructor(x1: String, x2: String = "abc") { - prop = "$x1#$x2" - } - constructor(x1: Long) { - prop = "$x1" - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/Simple.A.kt b/compiler/testData/compileKotlinAgainstKotlin/Simple.A.kt deleted file mode 100644 index 77a47868294..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/Simple.A.kt +++ /dev/null @@ -1,3 +0,0 @@ -package aaa - -fun hello() = 17 diff --git a/compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.B.kt b/compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.B.kt deleted file mode 100644 index b93bc202943..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.B.kt +++ /dev/null @@ -1,6 +0,0 @@ -import pkg.ClassA - -fun main(args: Array) { - val obj = ClassA.DEFAULT - obj.toString() -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt b/compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt deleted file mode 100644 index cd9547e8549..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt +++ /dev/null @@ -1,10 +0,0 @@ -package aaa - -enum class E { - TRIVIAL_ENTRY, - SUBCLASS { }; - - class Nested { - fun fortyTwo() = 42 - } -} diff --git a/compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.B.kt b/compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt similarity index 63% rename from compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt index de90e93d7f3..a8f3939dab6 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt @@ -1,3 +1,17 @@ +// FILE: A.kt + +package a + +@Retention(AnnotationRetention.RUNTIME) +annotation class Ann + +interface Tr { + @Ann + fun foo() {} +} + +// FILE: B.kt + class C : a.Tr fun main(args: Array) { @@ -6,4 +20,4 @@ fun main(args: Array) { if (annotations != "@a.Ann()") { throw AssertionError(annotations) } -} \ No newline at end of file +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ClassInObject.B.kt b/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt similarity index 51% rename from compiler/testData/compileKotlinAgainstKotlin/ClassInObject.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/classInObject.kt index 7bbaa98c932..efe16e525ec 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/ClassInObject.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/classInObject.kt @@ -1,3 +1,13 @@ +// FILE: A.kt + +package a + +object CartRoutes { + class RemoveOrderItem() +} + +// FILE: B.kt + import a.CartRoutes fun main(args: Array) { diff --git a/compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt b/compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt new file mode 100644 index 00000000000..9d757afca54 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt @@ -0,0 +1,19 @@ +// FILE: A.kt + +package library + +public enum class EnumClass { + ENTRY; + + public companion object { + public fun entry(): EnumClass = ENTRY + } +} + +// FILE: B.kt + +import library.EnumClass + +fun main(args: Array) { + if (EnumClass.entry() != EnumClass.ENTRY) throw AssertionError() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt b/compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt new file mode 100644 index 00000000000..198fb6fa962 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt @@ -0,0 +1,15 @@ +// FILE: A.kt + +class A { + companion object { + fun foo() = 42 + val bar = "OK" + } +} + +// FILE: B.kt + +fun main(args: Array) { + if (A.foo() != 42) throw Exception() + if (A.bar != "OK") throw Exception() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.B.kt b/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt similarity index 50% rename from compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt index af77493983f..c2886199cea 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt @@ -1,3 +1,11 @@ +// FILE: A.kt + +class A(vararg s: String) { + +} + +// FILE: B.kt + fun main(args: Array) { A() A("a") diff --git a/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt b/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt new file mode 100644 index 00000000000..ded8642b491 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt @@ -0,0 +1,11 @@ +// FILE: A.kt + +package aaa + +class A(val a: Int = 1) + +// FILE: B.kt + +fun main(args: Array) { + aaa.A() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt b/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt new file mode 100644 index 00000000000..bfb139ba349 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt @@ -0,0 +1,20 @@ +// FILE: A.kt + +package aaa + +class A { + class B { + class O { + val s = "OK" + } + } +} + +// FILE: B.kt + +fun main(args: Array) { + val str = aaa.A.B.O().s + if (str != "OK") { + throw Exception() + } +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/Enum.B.kt b/compiler/testData/compileKotlinAgainstKotlin/enum.kt similarity index 53% rename from compiler/testData/compileKotlinAgainstKotlin/Enum.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/enum.kt index bb578560f1a..24d0a24f2d7 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/Enum.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/enum.kt @@ -1,3 +1,14 @@ +// FILE: A.kt + +package aaa + +enum class E { + TRIVIAL_ENTRY, + SUBCLASS { } +} + +// FILE: B.kt + import aaa.E fun main(args: Array) { diff --git a/compiler/testData/compileKotlinAgainstKotlin/ImportObject.B.kt b/compiler/testData/compileKotlinAgainstKotlin/importObject.kt similarity index 61% rename from compiler/testData/compileKotlinAgainstKotlin/ImportObject.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/importObject.kt index 8d797c096da..1a74675a4cd 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/ImportObject.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/importObject.kt @@ -1,7 +1,17 @@ +// 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 -} \ No newline at end of file +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.A.kt b/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt similarity index 50% rename from compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.A.kt rename to compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt index f8b06ffd526..0d92373dcc3 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.A.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt @@ -1,3 +1,5 @@ +// FILE: A.kt + package constants public const val b: Byte = 100 @@ -13,3 +15,18 @@ public const val str: String = ":)" @Retention(AnnotationRetention.RUNTIME) public annotation class AnnotationClass(public val value: String) + +// FILE: B.kt + +import constants.* + +@AnnotationClass("$b $s $i $l $f $d $bb $c $str") +class DummyClass() + +fun main(args: Array) { + 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" }) +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.B.kt b/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt similarity index 66% rename from compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt index 35c6bd280f1..a73c2fd5509 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt @@ -1,3 +1,13 @@ +// FILE: A.kt + +package second + +public class Outer() { + inner class Inner(test: String) +} + +// FILE: B.kt + //test for KT-3702 Inner class constructor cannot be invoked in override function with receiver import second.Outer @@ -7,4 +17,4 @@ fun Outer.testExt() { fun main(args: Array) { Outer().testExt() -} \ No newline at end of file +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmField.A.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmField.A.kt deleted file mode 100644 index 4232fdb442c..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmField.A.kt +++ /dev/null @@ -1,9 +0,0 @@ -open class A { - @JvmField public val publicField = "1"; - @JvmField internal val internalField = "2"; - @JvmField protected val protectedfield = "3"; -} - -open class B : A() { - -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmField.B.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmField.B.kt deleted file mode 100644 index 375138cbd7e..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmField.B.kt +++ /dev/null @@ -1,9 +0,0 @@ -open class C : B() { - fun test(): String { - return super.publicField + super.internalField + super.protectedfield - } -} - -fun main(args: Array) { - C().test() -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt new file mode 100644 index 00000000000..e161d4b3956 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmField.kt @@ -0,0 +1,23 @@ +// FILE: A.kt + +open class A { + @JvmField public val publicField = "1"; + @JvmField internal val internalField = "2"; + @JvmField protected val protectedfield = "3"; +} + +open class B : A() { + +} + +// FILE: B.kt + +open class C : B() { + fun test(): String { + return super.publicField + super.internalField + super.protectedfield + } +} + +fun main(args: Array) { + C().test() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.A.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.A.kt deleted file mode 100644 index 7fd9b50deb6..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.A.kt +++ /dev/null @@ -1,5 +0,0 @@ -open class A(@JvmField public val publicField: String = "1", - @JvmField internal val internalField: String = "2", - @JvmField protected val protectedfield: String = "3") - -open class B : A() \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.B.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.B.kt deleted file mode 100644 index 375138cbd7e..00000000000 --- a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.B.kt +++ /dev/null @@ -1,9 +0,0 @@ -open class C : B() { - fun test(): String { - return super.publicField + super.internalField + super.protectedfield - } -} - -fun main(args: Array) { - C().test() -} \ No newline at end of file diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt new file mode 100644 index 00000000000..904a215af57 --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt @@ -0,0 +1,19 @@ +// FILE: A.kt + +open class A(@JvmField public val publicField: String = "1", + @JvmField internal val internalField: String = "2", + @JvmField protected val protectedfield: String = "3") + +open class B : A() + +// FILE: B.kt + +open class C : B() { + fun test(): String { + return super.publicField + super.internalField + super.protectedfield + } +} + +fun main(args: Array) { + C().test() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt b/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt new file mode 100644 index 00000000000..9b1f845ec7a --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt @@ -0,0 +1,12 @@ +// 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/KotlinPropertyAsAnnotationParameter.B.kt b/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt similarity index 59% rename from compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt index 99b649f88ae..73f08615bcd 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt @@ -1,3 +1,29 @@ +// FILE: A.kt + +package a + +const val i = 2 +const val s = 2.toShort() +const val f = 2.0.toFloat() +const val d = 2.0 +const val l = 2L +const val b = 2.toByte() +const val bool = true +const val c = 'c' +const val str = "str" + +const val i2 = i +const val s2 = s +const val f2 = f +const val d2 = d +const val l2 = l +const val b2 = b +const val bool2 = bool +const val c2 = c +const val str2 = str + +// FILE: B.kt + import a.* @Ann(i, s, f, d, l, b, bool, c, str) diff --git a/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt b/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt new file mode 100644 index 00000000000..052978a31bf --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt @@ -0,0 +1,15 @@ +// FILE: A.kt + +@file:[JvmName("Test") JvmMultifileClass] + +val property = "K" + +inline fun K(body: () -> String): String = + body() + property + +// FILE: B.kt + +fun main(args: Array) { + val ok = K { "O" } + if (ok != "OK") throw java.lang.AssertionError("Expected: OK, actual: $ok") +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedClass.B.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt similarity index 54% rename from compiler/testData/compileKotlinAgainstKotlin/NestedClass.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt index b8a6a820084..66f490749e8 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedClass.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt @@ -1,3 +1,15 @@ +// FILE: A.kt + +package aaa + +class A { + class O { + val s = "OK" + } +} + +// FILE: B.kt + fun main(args: Array) { val str = aaa.A.O().s if (str != "OK") { diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedEnum.B.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt similarity index 58% rename from compiler/testData/compileKotlinAgainstKotlin/NestedEnum.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt index 107693e176c..00695a2c19e 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedEnum.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt @@ -1,3 +1,15 @@ +// FILE: A.kt + +package aaa + +class A { + enum class E { + A + } +} + +// FILE: B.kt + fun main(args: Array) { val str = aaa.A.E.A if (str.toString() != "A") { diff --git a/compiler/testData/compileKotlinAgainstKotlin/NestedObject.B.kt b/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt similarity index 54% rename from compiler/testData/compileKotlinAgainstKotlin/NestedObject.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt index 46bfda75910..ce2d2dfb974 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/NestedObject.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt @@ -1,3 +1,15 @@ +// FILE: A.kt + +package aaa + +class A { + object O { + val s = "OK" + } +} + +// FILE: B.kt + fun main(args: Array) { val str = aaa.A.O.s if (str != "OK") { diff --git a/compiler/testData/compileKotlinAgainstKotlin/PlatformNames.A.kt b/compiler/testData/compileKotlinAgainstKotlin/platformNames.kt similarity index 51% rename from compiler/testData/compileKotlinAgainstKotlin/PlatformNames.A.kt rename to compiler/testData/compileKotlinAgainstKotlin/platformNames.kt index ce8f37f27ab..d447ae51fab 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformNames.A.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/platformNames.kt @@ -1,3 +1,5 @@ +// FILE: A.kt + package lib @JvmName("bar") @@ -8,3 +10,14 @@ var v: Int = 1 get @JvmName("vset") set + +// FILE: B.kt + +import lib.* + +fun main(args: Array) { + foo() + + v = 1 + println(v) +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt b/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt new file mode 100644 index 00000000000..2245f8922aa --- /dev/null +++ b/compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt @@ -0,0 +1,21 @@ +// 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.B.kt b/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt similarity index 75% rename from compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt index 61d4d74a0a9..b10e9b0b87b 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt @@ -1,3 +1,15 @@ +// FILE: A.kt + +package test + +import java.util.* + +fun printStream() = System.out +fun list() = Collections.emptyList() +fun array(a: Array) = Arrays.copyOf(a, 2) + +// FILE: B.kt + import java.io.PrintStream import java.util.ArrayList import test.* @@ -19,4 +31,4 @@ fun main(args: Array) { a[0] = 1 val a1: Inv> = inv(a) val a2: Inv?> = inv(a) -} \ No newline at end of file +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/PropertyReference.B.kt b/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt similarity index 72% rename from compiler/testData/compileKotlinAgainstKotlin/PropertyReference.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt index 5a9e82e1b29..21ea240bc04 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/PropertyReference.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt @@ -1,3 +1,14 @@ +// FILE: A.kt + +package a + +public var topLevel: Int = 42 + +public val String.extension: Long + get() = length.toLong() + +// FILE: B.kt + import a.* fun main(args: Array) { diff --git a/compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.B.kt b/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt similarity index 70% rename from compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt index 348e2a47f0c..f77cd5bdd1b 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt @@ -1,3 +1,17 @@ +// FILE: A.kt + +package a + +interface Rec> { + fun t(): T +} + +interface Super { + fun foo(p: Rec<*, *>) = p.t() +} + +// FILE: B.kt + import a.* fun main(args: Array) { @@ -8,4 +22,4 @@ fun main(args: Array) { fun test(s: Super, p: Rec<*, *>) { s.foo(p).t().t().t() -} \ No newline at end of file +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.B.kt b/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt similarity index 77% rename from compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt index 3ca776babb1..9329c43e819 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt @@ -1,3 +1,16 @@ +// FILE: A.kt + +open class A { + val prop: String + constructor(x1: String, x2: String = "abc") { + prop = "$x1#$x2" + } + constructor(x1: Long) { + prop = "$x1" + } +} + +// FILE: B.kt class B1() : A("123") { constructor(x1: Int): this() {} diff --git a/compiler/testData/compileKotlinAgainstKotlin/Simple.B.kt b/compiler/testData/compileKotlinAgainstKotlin/simple.kt similarity index 64% rename from compiler/testData/compileKotlinAgainstKotlin/Simple.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/simple.kt index a98c92eea2d..0544eaeb478 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/Simple.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/simple.kt @@ -1,3 +1,11 @@ +// FILE: A.kt + +package aaa + +fun hello() = 17 + +// FILE: B.kt + fun main(args: Array) { val h = aaa.hello() if (h != 17) { diff --git a/compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.A.kt b/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt similarity index 54% rename from compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.A.kt rename to compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt index 02baf8dcdcb..b5a1e592b19 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.A.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt @@ -1,3 +1,5 @@ +// FILE: A.kt + package pkg interface ClassA { @@ -7,3 +9,12 @@ interface ClassA { } } } + +// FILE: B.kt + +import pkg.ClassA + +fun main(args: Array) { + val obj = ClassA.DEFAULT + obj.toString() +} diff --git a/compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.B.kt b/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt similarity index 52% rename from compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.B.kt rename to compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt index f753c27d056..dbe79e0db48 100644 --- a/compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.B.kt +++ b/compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt @@ -1,3 +1,18 @@ +// FILE: A.kt + +package aaa + +enum class E { + TRIVIAL_ENTRY, + SUBCLASS { }; + + class Nested { + fun fortyTwo() = 42 + } +} + +// FILE: B.kt + import aaa.E.* fun main(args: Array) { diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstKotlinTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstKotlinTest.java index c1650a5d2be..44908817047 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstKotlinTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstKotlinTest.java @@ -18,16 +18,16 @@ package org.jetbrains.kotlin.jvm.compiler; import com.intellij.openapi.Disposable; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.ArrayUtil; import kotlin.Pair; -import kotlin.text.StringsKt; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.cli.common.modules.ModuleBuilder; import org.jetbrains.kotlin.cli.common.output.outputUtils.OutputUtilsKt; import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.codegen.ClassFileFactory; +import org.jetbrains.kotlin.codegen.CodegenTestCase; import org.jetbrains.kotlin.codegen.GenerationUtils; import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime; import org.jetbrains.kotlin.config.CompilerConfiguration; @@ -36,7 +36,6 @@ import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils; import org.jetbrains.kotlin.psi.KtFile; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestCaseWithTmpdir; import org.jetbrains.kotlin.test.TestJdkKind; import org.jetbrains.kotlin.utils.ExceptionUtilsKt; @@ -47,77 +46,82 @@ import java.net.URL; import java.net.URLClassLoader; import java.util.Arrays; import java.util.List; +import java.util.Map; -public abstract class AbstractCompileKotlinAgainstKotlinTest extends TestCaseWithTmpdir { +public abstract class AbstractCompileKotlinAgainstKotlinTest extends CodegenTestCase { + private File tmpdir; private File aDir; private File bDir; @Override protected void setUp() throws Exception { super.setUp(); + tmpdir = KotlinTestUtils.tmpDirForTest(this); aDir = new File(tmpdir, "a"); bDir = new File(tmpdir, "b"); KotlinTestUtils.mkdirs(aDir); KotlinTestUtils.mkdirs(bDir); } - public void doTest(@NotNull String fileName) throws Exception { - compileA(new File(fileName)); - String fileNameB = fileName.replaceFirst("A\\.kt$", "B.kt"); - compileB(new File(fileNameB)); - invokeMain(fileNameB); + @Override + protected void doMultiFileTest(File file, Map modules, 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 { - Method main = generatedClass(fileName).getMethod("main", String[].class); + String className = PackagePartClassUtils.getFilePartShortName(fileName); + Method main = createGeneratedClassLoader().loadClass(className).getMethod("main", String[].class); main.invoke(null, new Object[] {ArrayUtil.EMPTY_STRING_ARRAY}); } - private void invokeBox(@NotNull String fileName) throws Exception { - Method box = generatedClass(fileName).getMethod("box"); + private void invokeBox(@NotNull String className) throws Exception { + Method box = createGeneratedClassLoader().loadClass(className).getMethod("box"); String result = (String) box.invoke(null); assertEquals("OK", result); } @NotNull - private Class generatedClass(@NotNull String fileName) throws Exception { - URLClassLoader classLoader = new URLClassLoader( + private URLClassLoader createGeneratedClassLoader() throws Exception { + return new URLClassLoader( new URL[]{ bDir.toURI().toURL(), aDir.toURI().toURL() }, ForTestCompileRuntime.runtimeAndReflectJarClassLoader() ); - String fileLastName = new File(fileName).getName(); - return classLoader.loadClass(PackagePartClassUtils.getFilePartShortName(fileLastName)); } - private ClassFileFactory compileA(@NotNull File ktAFile) throws IOException { - KotlinCoreEnvironment jetCoreEnvironment = KotlinTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(getTestRootDisposable(), - ConfigurationKind.ALL); - return compileKotlin(ktAFile, aDir, jetCoreEnvironment, getTestRootDisposable()); + @NotNull + private ClassFileFactory compileA(@NotNull String fileName, @NotNull String content) throws IOException { + KotlinCoreEnvironment environment = + KotlinTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(getTestRootDisposable(), ConfigurationKind.ALL); + return compileKotlin(fileName, content, aDir, environment, getTestRootDisposable()); } - private ClassFileFactory compileB(@NotNull File ktBFile) throws IOException { + @NotNull + private ClassFileFactory compileB(@NotNull String fileName, @NotNull String content) throws IOException { CompilerConfiguration configurationWithADirInClasspath = KotlinTestUtils .compilerConfigurationForTests(ConfigurationKind.ALL, TestJdkKind.MOCK_JDK, KotlinTestUtils.getAnnotationsJar(), aDir); KotlinCoreEnvironment environment = KotlinCoreEnvironment.createForTests(getTestRootDisposable(), configurationWithADirInClasspath, EnvironmentConfigFiles.JVM_CONFIG_FILES); - return compileKotlin(ktBFile, bDir, environment, getTestRootDisposable()); + return compileKotlin(fileName, content, bDir, environment, getTestRootDisposable()); } + @NotNull private ClassFileFactory compileKotlin( - @NotNull File file, @NotNull File outputDir, @NotNull KotlinCoreEnvironment jetCoreEnvironment, + @NotNull String fileName, @NotNull String content, @NotNull File outputDir, @NotNull KotlinCoreEnvironment environment, @NotNull Disposable disposable ) throws IOException { + KtFile psiFile = KotlinTestUtils.createFile(fileName, content, environment.getProject()); - String text = FileUtil.loadFile(file, true); + ModuleVisibilityManager.SERVICE.getInstance(environment.getProject()).addModule(new ModuleBuilder("module for test", tmpdir.getAbsolutePath(), "test")); - KtFile psiFile = KotlinTestUtils.createFile(file.getName(), text, jetCoreEnvironment.getProject()); - - ModuleVisibilityManager.SERVICE.getInstance(jetCoreEnvironment.getProject()).addModule(new ModuleBuilder("module for test", tmpdir.getAbsolutePath(), "test")); - - ClassFileFactory outputFiles = GenerationUtils.compileFileGetClassFileFactoryForTest(psiFile, jetCoreEnvironment); + ClassFileFactory outputFiles = GenerationUtils.compileFileGetClassFileFactoryForTest(psiFile, environment); OutputUtilsKt.writeAllTo(outputFiles, outputDir); @@ -126,15 +130,38 @@ public abstract class AbstractCompileKotlinAgainstKotlinTest extends TestCaseWit } @NotNull - protected Pair doBoxTest(@NotNull String firstFileName) { - List files = Arrays.asList(firstFileName, StringsKt.substringBeforeLast(firstFileName, "1.kt", "") + "2.kt"); + protected Pair doBoxTest(@NotNull String firstFileName) throws Exception { + List files = KotlinTestUtils.createTestFiles( + firstFileName, KotlinTestUtils.doLoadFile(new File(firstFileName)), + new KotlinTestUtils.TestFileFactory() { + @Override + public TestFile createFile( + @Nullable Void module, @NotNull String fileName, @NotNull String text, @NotNull Map directives + ) { + return new TestFile(fileName, text); + } + + @Override + public Void createModule(@NotNull String name, @NotNull List dependencies) { + throw new UnsupportedOperationException(); + } + }); + + // TODO: drop this (migrate codegen/box/inline/) + if (files.size() == 1) { + TestFile firstFile = files.iterator().next(); + File secondFile = new File(firstFileName.replace("1.kt", "2.kt")); + files = Arrays.asList(firstFile, new TestFile(secondFile.getName(), KotlinTestUtils.doLoadFile(secondFile))); + } ClassFileFactory factory1 = null; ClassFileFactory factory2 = null; try { - factory1 = compileA(new File(files.get(1))); - factory2 = compileB(new File(files.get(0))); - invokeBox(files.get(0)); + TestFile fileA = files.get(1); + TestFile fileB = files.get(0); + factory1 = compileA(fileA.name, fileA.content); + factory2 = compileB(fileB.name, fileB.content); + invokeBox(PackagePartClassUtils.getFilePartShortName(new File(fileB.name).getName())); } catch (Throwable e) { String result = ""; diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java index 312a5e6f91c..b76aaa3e7e9 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstKotlinTestGenerated.java @@ -32,174 +32,174 @@ import java.util.regex.Pattern; @RunWith(JUnit3RunnerWithInners.class) public class CompileKotlinAgainstKotlinTestGenerated extends AbstractCompileKotlinAgainstKotlinTest { public void testAllFilesPresentInCompileKotlinAgainstKotlin() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/compileKotlinAgainstKotlin"), Pattern.compile("^(.+)\\.A.kt$"), true); + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/compileKotlinAgainstKotlin"), Pattern.compile("^(.+)\\.kt$"), true); } - @TestMetadata("AnnotationInTrait.A.kt") + @TestMetadata("annotationInTrait.kt") public void testAnnotationInTrait() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/AnnotationInTrait.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/annotationInTrait.kt"); doTest(fileName); } - @TestMetadata("ClassInObject.A.kt") + @TestMetadata("classInObject.kt") public void testClassInObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/ClassInObject.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/classInObject.kt"); doTest(fileName); } - @TestMetadata("ClassObjectInEnum.A.kt") + @TestMetadata("classObjectInEnum.kt") public void testClassObjectInEnum() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/ClassObjectInEnum.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/classObjectInEnum.kt"); doTest(fileName); } - @TestMetadata("ClassObjectMember.A.kt") + @TestMetadata("classObjectMember.kt") public void testClassObjectMember() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/ClassObjectMember.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/classObjectMember.kt"); doTest(fileName); } - @TestMetadata("ConstructorVararg.A.kt") + @TestMetadata("constructorVararg.kt") public void testConstructorVararg() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/ConstructorVararg.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/constructorVararg.kt"); doTest(fileName); } - @TestMetadata("DefaultConstructor.A.kt") + @TestMetadata("defaultConstructor.kt") public void testDefaultConstructor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/DefaultConstructor.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/defaultConstructor.kt"); doTest(fileName); } - @TestMetadata("DoublyNestedClass.A.kt") + @TestMetadata("doublyNestedClass.kt") public void testDoublyNestedClass() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/DoublyNestedClass.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/doublyNestedClass.kt"); doTest(fileName); } - @TestMetadata("Enum.A.kt") + @TestMetadata("enum.kt") public void testEnum() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/Enum.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/enum.kt"); doTest(fileName); } - @TestMetadata("ImportObject.A.kt") + @TestMetadata("importObject.kt") public void testImportObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/ImportObject.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/importObject.kt"); doTest(fileName); } - @TestMetadata("InlinedConstants.A.kt") + @TestMetadata("inlinedConstants.kt") public void testInlinedConstants() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/InlinedConstants.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/inlinedConstants.kt"); doTest(fileName); } - @TestMetadata("InnerClassConstructor.A.kt") + @TestMetadata("innerClassConstructor.kt") public void testInnerClassConstructor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/InnerClassConstructor.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/innerClassConstructor.kt"); doTest(fileName); } - @TestMetadata("jvmField.A.kt") + @TestMetadata("jvmField.kt") public void testJvmField() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmField.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmField.kt"); doTest(fileName); } - @TestMetadata("jvmFieldInConstructor.A.kt") + @TestMetadata("jvmFieldInConstructor.kt") public void testJvmFieldInConstructor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmFieldInConstructor.kt"); doTest(fileName); } - @TestMetadata("JvmNameOnAccessor.A.kt") + @TestMetadata("jvmNameOnAccessor.kt") public void testJvmNameOnAccessor() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/JvmNameOnAccessor.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/jvmNameOnAccessor.kt"); doTest(fileName); } - @TestMetadata("KotlinPropertyAsAnnotationParameter.A.kt") + @TestMetadata("kotlinPropertyAsAnnotationParameter.kt") public void testKotlinPropertyAsAnnotationParameter() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/KotlinPropertyAsAnnotationParameter.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/kotlinPropertyAsAnnotationParameter.kt"); doTest(fileName); } - @TestMetadata("MultifileClassInlineFunctionAccessingProperty.A.kt") + @TestMetadata("multifileClassInlineFunctionAccessingProperty.kt") public void testMultifileClassInlineFunctionAccessingProperty() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/MultifileClassInlineFunctionAccessingProperty.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/multifileClassInlineFunctionAccessingProperty.kt"); doTest(fileName); } - @TestMetadata("NestedClass.A.kt") + @TestMetadata("nestedClass.kt") public void testNestedClass() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/NestedClass.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/nestedClass.kt"); doTest(fileName); } - @TestMetadata("NestedEnum.A.kt") + @TestMetadata("nestedEnum.kt") public void testNestedEnum() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/NestedEnum.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/nestedEnum.kt"); doTest(fileName); } - @TestMetadata("NestedObject.A.kt") + @TestMetadata("nestedObject.kt") public void testNestedObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/NestedObject.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/nestedObject.kt"); doTest(fileName); } - @TestMetadata("PlatformNames.A.kt") + @TestMetadata("platformNames.kt") public void testPlatformNames() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/PlatformNames.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformNames.kt"); doTest(fileName); } - @TestMetadata("PlatformStaticInObject.A.kt") + @TestMetadata("platformStaticInObject.kt") public void testPlatformStaticInObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/PlatformStaticInObject.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformStaticInObject.kt"); doTest(fileName); } - @TestMetadata("PlatformTypes.A.kt") + @TestMetadata("platformTypes.kt") public void testPlatformTypes() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/PlatformTypes.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/platformTypes.kt"); doTest(fileName); } - @TestMetadata("PropertyReference.A.kt") + @TestMetadata("propertyReference.kt") public void testPropertyReference() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/PropertyReference.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/propertyReference.kt"); doTest(fileName); } - @TestMetadata("RecursiveGeneric.A.kt") + @TestMetadata("recursiveGeneric.kt") public void testRecursiveGeneric() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/RecursiveGeneric.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/recursiveGeneric.kt"); doTest(fileName); } - @TestMetadata("SecondaryConstructors.A.kt") + @TestMetadata("secondaryConstructors.kt") public void testSecondaryConstructors() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/SecondaryConstructors.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/secondaryConstructors.kt"); doTest(fileName); } - @TestMetadata("Simple.A.kt") + @TestMetadata("simple.kt") public void testSimple() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/Simple.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/simple.kt"); doTest(fileName); } - @TestMetadata("SimpleValAnonymousObject.A.kt") + @TestMetadata("simpleValAnonymousObject.kt") public void testSimpleValAnonymousObject() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/SimpleValAnonymousObject.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/simpleValAnonymousObject.kt"); doTest(fileName); } - @TestMetadata("StarImportEnum.A.kt") + @TestMetadata("starImportEnum.kt") public void testStarImportEnum() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/StarImportEnum.A.kt"); + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/compileKotlinAgainstKotlin/starImportEnum.kt"); doTest(fileName); } } diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstMultifileKotlinTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstMultifileKotlinTestGenerated.java index 0c6704b314a..7e0c2965a2d 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstMultifileKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstMultifileKotlinTestGenerated.java @@ -32,7 +32,54 @@ import java.util.regex.Pattern; @RunWith(JUnit3RunnerWithInners.class) public class CompileKotlinAgainstMultifileKotlinTestGenerated extends AbstractCompileKotlinAgainstKotlinTest { public void testAllFilesPresentInBoxMultifileClasses() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxMultifileClasses"), Pattern.compile("^(.+)\\.1.kt$"), true); + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxMultifileClasses"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("compiler/testData/codegen/boxMultifileClasses/calls") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Calls extends AbstractCompileKotlinAgainstKotlinTest { + public void testAllFilesPresentInCalls() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxMultifileClasses/calls"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("callFromOtherPackage.kt") + public void testCallFromOtherPackage() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxMultifileClasses/calls/callFromOtherPackage.kt"); + doBoxTest(fileName); + } + + @TestMetadata("constFromOtherPackage.kt") + public void testConstFromOtherPackage() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxMultifileClasses/calls/constFromOtherPackage.kt"); + doBoxTest(fileName); + } + + @TestMetadata("valFromOtherPackage.kt") + public void testValFromOtherPackage() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxMultifileClasses/calls/valFromOtherPackage.kt"); + doBoxTest(fileName); + } + + @TestMetadata("varFromOtherPackage.kt") + public void testVarFromOtherPackage() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxMultifileClasses/calls/varFromOtherPackage.kt"); + doBoxTest(fileName); + } + } + + @TestMetadata("compiler/testData/codegen/boxMultifileClasses/reflection") + @TestDataPath("$PROJECT_ROOT") + @RunWith(JUnit3RunnerWithInners.class) + public static class Reflection extends AbstractCompileKotlinAgainstKotlinTest { + public void testAllFilesPresentInReflection() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/boxMultifileClasses/reflection"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("constPropertyReferenceFromMultifileClass.kt") + public void testConstPropertyReferenceFromMultifileClass() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/codegen/boxMultifileClasses/reflection/constPropertyReferenceFromMultifileClass.kt"); + doBoxTest(fileName); + } + } } diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index dd3b73a2e42..134dd1812a7 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -203,8 +203,8 @@ fun main(args: Array) { model("codegen/boxInline", extension = "1.kt", testMethod = "doBoxTestWithInlineCheck") } - testClass(AbstractCompileKotlinAgainstKotlinTest::class.java, "CompileKotlinAgainstMultifileKotlinTestGenerated") { - model("codegen/boxMultifileClasses", extension = "1.kt", testMethod = "doBoxTest") + testClass("CompileKotlinAgainstMultifileKotlinTestGenerated") { + model("codegen/boxMultifileClasses", testMethod = "doBoxTest") } testClass("BlackBoxMultiFileCodegenTestGenerated") { @@ -281,7 +281,7 @@ fun main(args: Array) { } testClass() { - model("compileKotlinAgainstKotlin", extension = "A.kt") + model("compileKotlinAgainstKotlin") } testClass() {