Migrate CompileKotlinAgainstKotlin test to multi-file framework

This commit is contained in:
Alexander Udalov
2016-02-24 12:02:25 +03:00
committed by Alexander Udalov
parent 5884d4be79
commit cc8af573f9
69 changed files with 569 additions and 358 deletions
@@ -1,9 +0,0 @@
package a
@Retention(AnnotationRetention.RUNTIME)
annotation class Ann
interface Tr {
@Ann
fun foo() {}
}
@@ -1,5 +0,0 @@
package a
object CartRoutes {
class RemoveOrderItem()
}
@@ -1,9 +0,0 @@
package library
public enum class EnumClass {
ENTRY;
public companion object {
public fun entry(): EnumClass = ENTRY
}
}
@@ -1,5 +0,0 @@
import library.EnumClass
fun main(args: Array<String>) {
if (EnumClass.entry() != EnumClass.ENTRY) throw AssertionError()
}
@@ -1,6 +0,0 @@
class A {
companion object {
fun foo() = 42
val bar = "OK"
}
}
@@ -1,4 +0,0 @@
fun main(args: Array<String>) {
if (A.foo() != 42) throw Exception()
if (A.bar != "OK") throw Exception()
}
@@ -1,3 +0,0 @@
class A(vararg s: String) {
}
@@ -1,3 +0,0 @@
package aaa
class A(val a: Int = 1)
@@ -1,3 +0,0 @@
fun main(args: Array<String>) {
aaa.A()
}
@@ -1,9 +0,0 @@
package aaa
class A {
class B {
class O {
val s = "OK"
}
}
}
@@ -1,6 +0,0 @@
fun main(args: Array<String>) {
val str = aaa.A.B.O().s
if (str != "OK") {
throw Exception()
}
}
@@ -1,6 +0,0 @@
package aaa
enum class E {
TRIVIAL_ENTRY,
SUBCLASS { }
}
@@ -1,6 +0,0 @@
//This a test for blinking bug from KT-3124
package some
public object SOME_OBJECT {
}
@@ -1,12 +0,0 @@
import constants.*
@AnnotationClass("$b $s $i $l $f $d $bb $c $str")
class DummyClass()
fun main(args: Array<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" })
}
@@ -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)
}
@@ -1,4 +0,0 @@
class A {
val OK: String = "OK"
@JvmName("OK") get
}
@@ -1,3 +0,0 @@
fun main(args: Array<String>) {
if (A().OK != "OK") throw java.lang.AssertionError()
}
@@ -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
@@ -1,6 +0,0 @@
@file:[JvmName("Test") JvmMultifileClass]
val property = "K"
inline fun K(body: () -> String): String =
body() + property
@@ -1,4 +0,0 @@
fun main(args: Array<String>) {
val ok = K { "O" }
if (ok != "OK") throw java.lang.AssertionError("Expected: OK, actual: $ok")
}
@@ -1,7 +0,0 @@
package aaa
class A {
class O {
val s = "OK"
}
}
@@ -1,7 +0,0 @@
package aaa
class A {
enum class E {
A
}
}
@@ -1,7 +0,0 @@
package aaa
class A {
object O {
val s = "OK"
}
}
@@ -1,8 +0,0 @@
import lib.*
fun main(args: Array<String>) {
foo()
v = 1
println(v)
}
@@ -1,10 +0,0 @@
package aaa
import kotlin.jvm.*
public object TestObject {
@JvmStatic
public val test: String = "test"
}
@@ -1,6 +0,0 @@
fun main(args: Array<String>) {
val h = aaa.TestObject.test
if (h != "test") {
throw Exception()
}
}
@@ -1,7 +0,0 @@
package test
import java.util.*
fun printStream() = System.out
fun list() = Collections.emptyList<String>()
fun array(a: Array<Int>) = Arrays.copyOf(a, 2)
@@ -1,6 +0,0 @@
package a
public var topLevel: Int = 42
public val String.extension: Long
get() = length.toLong()
@@ -1,9 +0,0 @@
package a
interface Rec<R, out T: Rec<R, T>> {
fun t(): T
}
interface Super {
fun foo(p: Rec<*, *>) = p.t()
}
@@ -1,9 +0,0 @@
open class A {
val prop: String
constructor(x1: String, x2: String = "abc") {
prop = "$x1#$x2"
}
constructor(x1: Long) {
prop = "$x1"
}
}
@@ -1,3 +0,0 @@
package aaa
fun hello() = 17
@@ -1,6 +0,0 @@
import pkg.ClassA
fun main(args: Array<String>) {
val obj = ClassA.DEFAULT
obj.toString()
}
@@ -1,10 +0,0 @@
package aaa
enum class E {
TRIVIAL_ENTRY,
SUBCLASS { };
class Nested {
fun fortyTwo() = 42
}
}
@@ -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<String>) {
@@ -6,4 +20,4 @@ fun main(args: Array<String>) {
if (annotations != "@a.Ann()") {
throw AssertionError(annotations)
}
}
}
@@ -1,3 +1,13 @@
// FILE: A.kt
package a
object CartRoutes {
class RemoveOrderItem()
}
// FILE: B.kt
import a.CartRoutes
fun main(args: Array<String>) {
@@ -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<String>) {
if (EnumClass.entry() != EnumClass.ENTRY) throw AssertionError()
}
@@ -0,0 +1,15 @@
// FILE: A.kt
class A {
companion object {
fun foo() = 42
val bar = "OK"
}
}
// FILE: B.kt
fun main(args: Array<String>) {
if (A.foo() != 42) throw Exception()
if (A.bar != "OK") throw Exception()
}
@@ -1,3 +1,11 @@
// FILE: A.kt
class A(vararg s: String) {
}
// FILE: B.kt
fun main(args: Array<String>) {
A()
A("a")
@@ -0,0 +1,11 @@
// FILE: A.kt
package aaa
class A(val a: Int = 1)
// FILE: B.kt
fun main(args: Array<String>) {
aaa.A()
}
@@ -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<String>) {
val str = aaa.A.B.O().s
if (str != "OK") {
throw Exception()
}
}
@@ -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<String>) {
@@ -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<String>) {
val a = SOME_OBJECT
}
}
@@ -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<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" })
}
@@ -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<String>) {
Outer().testExt()
}
}
@@ -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() {
}
@@ -1,9 +0,0 @@
open class C : B() {
fun test(): String {
return super.publicField + super.internalField + super.protectedfield
}
}
fun main(args: Array<String>) {
C().test()
}
@@ -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<String>) {
C().test()
}
@@ -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()
@@ -1,9 +0,0 @@
open class C : B() {
fun test(): String {
return super.publicField + super.internalField + super.protectedfield
}
}
fun main(args: Array<String>) {
C().test()
}
@@ -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<String>) {
C().test()
}
@@ -0,0 +1,12 @@
// FILE: A.kt
class A {
val OK: String = "OK"
@JvmName("OK") get
}
// FILE: B.kt
fun main(args: Array<String>) {
if (A().OK != "OK") throw java.lang.AssertionError()
}
@@ -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)
@@ -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<String>) {
val ok = K { "O" }
if (ok != "OK") throw java.lang.AssertionError("Expected: OK, actual: $ok")
}
@@ -1,3 +1,15 @@
// FILE: A.kt
package aaa
class A {
class O {
val s = "OK"
}
}
// FILE: B.kt
fun main(args: Array<String>) {
val str = aaa.A.O().s
if (str != "OK") {
@@ -1,3 +1,15 @@
// FILE: A.kt
package aaa
class A {
enum class E {
A
}
}
// FILE: B.kt
fun main(args: Array<String>) {
val str = aaa.A.E.A
if (str.toString() != "A") {
@@ -1,3 +1,15 @@
// FILE: A.kt
package aaa
class A {
object O {
val s = "OK"
}
}
// FILE: B.kt
fun main(args: Array<String>) {
val str = aaa.A.O.s
if (str != "OK") {
@@ -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<String>) {
foo()
v = 1
println(v)
}
@@ -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<String>) {
val h = aaa.TestObject.test
if (h != "test") {
throw Exception()
}
}
@@ -1,3 +1,15 @@
// FILE: A.kt
package test
import java.util.*
fun printStream() = System.out
fun list() = Collections.emptyList<String>()
fun array(a: Array<Int>) = 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<String>) {
a[0] = 1
val a1: Inv<Array<Int>> = inv(a)
val a2: Inv<Array<out Int>?> = inv(a)
}
}
@@ -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<String>) {
@@ -1,3 +1,17 @@
// FILE: A.kt
package a
interface Rec<R, out T: Rec<R, T>> {
fun t(): T
}
interface Super {
fun foo(p: Rec<*, *>) = p.t()
}
// FILE: B.kt
import a.*
fun main(args: Array<String>) {
@@ -8,4 +22,4 @@ fun main(args: Array<String>) {
fun test(s: Super, p: Rec<*, *>) {
s.foo(p).t().t().t()
}
}
@@ -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() {}
@@ -1,3 +1,11 @@
// FILE: A.kt
package aaa
fun hello() = 17
// FILE: B.kt
fun main(args: Array<String>) {
val h = aaa.hello()
if (h != 17) {
@@ -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<String>) {
val obj = ClassA.DEFAULT
obj.toString()
}
@@ -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<String>) {