Replaced deprecated inline classes with JvmInline value classes in tests

This commit is contained in:
zhelenskiy
2021-10-09 02:31:28 +03:00
committed by TeamCityServer
parent b0aefd543a
commit 1da46586bd
386 changed files with 1480 additions and 840 deletions
@@ -1,7 +1,8 @@
// KJS_WITH_FULL_RUNTIME // KJS_WITH_FULL_RUNTIME
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(private val value: Int) : Comparable<UInt> { @JvmInline
value class UInt(private val value: Int) : Comparable<UInt> {
companion object { companion object {
private const val INT_MASK = 0xffffffffL private const val INT_MASK = 0xffffffffL
} }
@@ -21,7 +22,8 @@ inline class UInt(private val value: Int) : Comparable<UInt> {
value xor Int.MIN_VALUE value xor Int.MIN_VALUE
} }
inline class UIntArray(private val intArray: IntArray) { @JvmInline
value class UIntArray(private val intArray: IntArray) {
val size: Int get() = intArray.size val size: Int get() = intArray.size
operator fun get(index: Int): UInt = UInt(intArray[index]) operator fun get(index: Int): UInt = UInt(intArray[index])
@@ -33,7 +35,8 @@ inline class UIntArray(private val intArray: IntArray) {
operator fun iterator(): UIntIterator = UIntIterator(intArray.iterator()) operator fun iterator(): UIntIterator = UIntIterator(intArray.iterator())
} }
inline class UIntIterator(private val intIterator: IntIterator) : Iterator<UInt> { @JvmInline
value class UIntIterator(private val intIterator: IntIterator) : Iterator<UInt> {
override fun next(): UInt { override fun next(): UInt {
return UInt(intIterator.next()) return UInt(intIterator.next())
} }
@@ -1,7 +1,10 @@
// WITH_RUNTIME
@Target(AnnotationTarget.PROPERTY) @Target(AnnotationTarget.PROPERTY)
annotation class Anno annotation class Anno
inline class Z(val s: String) @JvmInline
value class Z(val s: String)
class A { class A {
@Anno @Anno
@@ -1,7 +1,8 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
// IGNORE_BACKEND: JVM // IGNORE_BACKEND: JVM
inline class A(val x: Int) { @JvmInline
value class A(val x: Int) {
fun f(): Int = super.hashCode() fun f(): Int = super.hashCode()
} }
@@ -1,18 +1,22 @@
// WITH_RUNTIME // WITH_RUNTIME
inline class IcInt(val i: Int) { @JvmInline
value class IcInt(val i: Int) {
fun simple(): String = i.toString() fun simple(): String = i.toString()
} }
inline class IcLong(val l: Long) { @JvmInline
value class IcLong(val l: Long) {
fun simple(): String = l.toString() fun simple(): String = l.toString()
} }
inline class IcAny(val a: Any?) { @JvmInline
value class IcAny(val a: Any?) {
fun simple(): String = a?.toString() ?: "null" fun simple(): String = a?.toString() ?: "null"
} }
inline class IcOverIc(val o: IcLong) { @JvmInline
value class IcOverIc(val o: IcLong) {
fun simple(): String = o.toString() fun simple(): String = o.toString()
} }
@@ -1,4 +1,7 @@
inline class IC private constructor(val i: Int) { // WITH_RUNTIME
@JvmInline
value class IC private constructor(val i: Int) {
@Suppress("SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS") @Suppress("SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_INLINE_CLASS")
constructor() : this(0) { constructor() : this(0) {
counter += 1 counter += 1
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class IC(val i: Int) { @JvmInline
value class IC(val i: Int) {
init { init {
counter += i counter += i
} }
@@ -1,9 +1,11 @@
// WITH_RUNTIME
// IGNORE_BACKEND: JVM // IGNORE_BACKEND: JVM
abstract class C<T> { abstract class C<T> {
fun foo(v: T?, x: (T) -> Any?) = v?.let { x(it) } fun foo(v: T?, x: (T) -> Any?) = v?.let { x(it) }
} }
inline class V(val value: Any?) @JvmInline
value class V(val value: Any?)
class D : C<V>() class D : C<V>()
@@ -1,4 +1,4 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
class BoxT<T>(val boxed: T) class BoxT<T>(val boxed: T)
class BoxAny(val boxed: Any?) class BoxAny(val boxed: Any?)
@@ -6,11 +6,14 @@ class BoxFoo(val boxed: IFoo?)
interface IFoo interface IFoo
inline class Str(val value: String) : IFoo @JvmInline
value class Str(val value: String) : IFoo
inline class Str2(val value: Str): IFoo @JvmInline
value class Str2(val value: Str): IFoo
inline class StrArr(val value: Array<String>): IFoo @JvmInline
value class StrArr(val value: Array<String>): IFoo
fun boxToTypeParameter(x: Str?) = BoxT(x) fun boxToTypeParameter(x: Str?) = BoxT(x)
fun boxToNullableAny(x: Str?) = BoxAny(x) fun boxToNullableAny(x: Str?) = BoxAny(x)
@@ -1,4 +1,4 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
class BoxT<T>(val boxed: T) class BoxT<T>(val boxed: T)
class BoxAny(val boxed: Any?) class BoxAny(val boxed: Any?)
@@ -6,7 +6,8 @@ class BoxFoo(val boxed: IFoo?)
interface IFoo interface IFoo
inline class I32(val value: Int): IFoo @JvmInline
value class I32(val value: Int): IFoo
fun boxToTypeParameter(x: I32?) = BoxT(x) fun boxToTypeParameter(x: I32?) = BoxT(x)
fun boxToNullableAny(x: I32?) = BoxAny(x) fun boxToNullableAny(x: I32?) = BoxAny(x)
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Result<T>(val a: Any?) @JvmInline
value class Result<T>(val a: Any?)
fun box(): String { fun box(): String {
val a = Result<Int>(1) // valueOf val a = Result<Int>(1) // valueOf
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
fun useX(x: X): String = x.x as String fun useX(x: X): String = x.x as String
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
fun useX(x: X): String = x.x as String fun useX(x: X): String = x.x as String
@@ -1,4 +1,7 @@
inline class X(val x: Int) // WITH_RUNTIME
@JvmInline
value class X(val x: Int)
fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x" fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: Any?) // WITH_RUNTIME
@JvmInline
value class X(val x: Any?)
fun useX(x: X): String = x.x as String fun useX(x: X): String = x.x as String
@@ -1,4 +1,7 @@
inline class X(val x: Any?) // WITH_RUNTIME
@JvmInline
value class X(val x: Any?)
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x" fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: Int?) // WITH_RUNTIME
@JvmInline
value class X(val x: Int?)
fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x" fun useX(x: X): String = if (x.x == 42) "OK" else "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: Int?) // WITH_RUNTIME
@JvmInline
value class X(val x: Int?)
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x" fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: String?) // WITH_RUNTIME
@JvmInline
value class X(val x: String?)
fun useX(x: X): String = x.x ?: "fail: $x" fun useX(x: X): String = x.x ?: "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: String?) // WITH_RUNTIME
@JvmInline
value class X(val x: String?)
fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x" fun useX(x: X): String = if (x.x == null) "OK" else "fail: $x"
@@ -1,4 +1,7 @@
inline class X(val x: String) // WITH_RUNTIME
@JvmInline
value class X(val x: String)
fun useX(x: X): String = x.x fun useX(x: X): String = x.x
@@ -1,11 +1,13 @@
// IGNORE_BACKEND: JVM // IGNORE_BACKEND: JVM
// WITH_RUNTIME
interface X<T> { interface X<T> {
operator fun plus(n: Int) : T operator fun plus(n: Int) : T
fun next(): T = this + 1 fun next(): T = this + 1
} }
inline class A(val value: Int) : X<A> { @JvmInline
value class A(val value: Int) : X<A> {
override operator fun plus(n: Int) = A(value + n) override operator fun plus(n: Int) = A(value + n)
} }
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Any) @JvmInline
value class X(val x: Any)
interface IBar { interface IBar {
fun bar(): Any fun bar(): Any
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Any?) @JvmInline
value class X(val x: Any?)
interface IBar { interface IBar {
fun bar(): Any fun bar(): Any
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Any) @JvmInline
value class X(val x: Any)
interface IFoo { interface IFoo {
fun foo(): Any fun foo(): Any
@@ -1,9 +1,11 @@
// WITH_RUNTIME
interface IFoo { interface IFoo {
fun foo(): String fun foo(): String
} }
inline class ICFoo(val t: IFoo): IFoo { @JvmInline
value class ICFoo(val t: IFoo): IFoo {
override fun foo(): String = t.foo() override fun foo(): String = t.foo()
} }
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Char) @JvmInline
value class X(val x: Char)
interface IFoo { interface IFoo {
fun foo(): Any fun foo(): Any
@@ -8,7 +8,8 @@ interface IFooMutableList {
fun foo(): MutableList<String> fun foo(): MutableList<String>
} }
inline class AL(val t: MutableList<String>) : MutableList<String> { @JvmInline
value class AL(val t: MutableList<String>) : MutableList<String> {
override val size: Int get() = t.size override val size: Int get() = t.size
override fun get(index: Int): String = t.get(index) override fun get(index: Int): String = t.get(index)
override fun set(index: Int, element: String): String = t.set(index, element) override fun set(index: Int, element: String): String = t.set(index, element)
@@ -1,8 +1,10 @@
// WITH_RUNTIME
interface IQ1 interface IQ1
interface IQ2 interface IQ2
inline class X(val x: Any): IQ1, IQ2 @JvmInline
value class X(val x: Any): IQ1, IQ2
interface IFoo1 { interface IFoo1 {
fun foo(): IQ1 fun foo(): IQ1
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
interface IFoo<T> { interface IFoo<T> {
fun foo(): T fun foo(): T
@@ -1,3 +1,5 @@
// WITH_RUNTIME
interface GFoo<out T> { interface GFoo<out T> {
fun foo(): T fun foo(): T
} }
@@ -8,7 +10,8 @@ interface IBar {
interface SFooBar : GFoo<IBar> interface SFooBar : GFoo<IBar>
inline class X(val x: String) : IBar { @JvmInline
value class X(val x: String) : IBar {
override fun bar(): String = x override fun bar(): String = x
} }
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: String) @JvmInline
value class X(val x: String)
interface IFoo1<T> { interface IFoo1<T> {
fun foo(x: T): X fun foo(x: T): X
@@ -1,4 +1,7 @@
inline class ResultOrClosed(val x: Any?) // WITH_RUNTIME
@JvmInline
value class ResultOrClosed(val x: Any?)
interface A<T> { interface A<T> {
fun foo(): T fun foo(): T
@@ -1,6 +1,7 @@
// WITH_RUNTIME // WITH_RUNTIME
inline class FieldValue(val value: String) @JvmInline
value class FieldValue(val value: String)
enum class RequestFields { enum class RequestFields {
ENUM_ONE ENUM_ONE
@@ -2,7 +2,8 @@
// WASM_MUTE_REASON: STDLIB_TEXT // WASM_MUTE_REASON: STDLIB_TEXT
// WITH_RUNTIME // WITH_RUNTIME
inline class NumberInlineClass(val value: Double) @JvmInline
value class NumberInlineClass(val value: Double)
interface TypeAdapter<FROM, TO> { interface TypeAdapter<FROM, TO> {
fun decode(string: FROM): TO fun decode(string: FROM): TO
@@ -2,7 +2,8 @@
// WASM_MUTE_REASON: STDLIB_TEXT // WASM_MUTE_REASON: STDLIB_TEXT
// WITH_RUNTIME // WITH_RUNTIME
inline class NumberInlineClass(val value: Double) @JvmInline
value class NumberInlineClass(val value: Double)
interface TypeAdapter<FROM, TO> { interface TypeAdapter<FROM, TO> {
fun decode(string: FROM): TO fun decode(string: FROM): TO
@@ -1,10 +1,14 @@
inline class Marker(val i: Int) // WITH_RUNTIME
@JvmInline
value class Marker(val i: Int)
interface I<T> { interface I<T> {
fun foo(i: Marker) : T fun foo(i: Marker) : T
} }
inline class IC(val a: Any) @JvmInline
value class IC(val a: Any)
class C : I<IC> { class C : I<IC> {
override fun foo(i: Marker): IC = IC("OK") override fun foo(i: Marker): IC = IC("OK")
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
interface IFoo<out T : X?> { interface IFoo<out T : X?> {
fun foo(): T fun foo(): T
@@ -1,4 +1,7 @@
inline class X(val x: Any?) // WITH_RUNTIME
@JvmInline
value class X(val x: Any?)
interface IFoo<out T : X?> { interface IFoo<out T : X?> {
fun foo(): T fun foo(): T
@@ -1,7 +1,9 @@
// IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR
// WITH_RUNTIME
// IGNORE_BACKEND: JS_IR_ES6 // IGNORE_BACKEND: JS_IR_ES6
inline class X(val x: Any?) @JvmInline
value class X(val x: Any?)
interface IFoo<out T : X?> { interface IFoo<out T : X?> {
fun foo(): T fun foo(): T
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
interface IFoo { interface IFoo {
fun foo(): X? fun foo(): X?
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Any?) @JvmInline
value class X(val x: Any?)
interface IFoo { interface IFoo {
fun foo(): X? fun foo(): X?
@@ -1,5 +1,7 @@
// WITH_RUNTIME
inline class X(val x: Any?) @JvmInline
value class X(val x: Any?)
interface IFoo { interface IFoo {
fun foo(): X? fun foo(): X?
@@ -1,9 +1,11 @@
// WITH_RUNTIME
interface IQ { interface IQ {
fun ok(): String fun ok(): String
} }
inline class X(val t: IQ): IQ { @JvmInline
value class X(val t: IQ): IQ {
override fun ok(): String = t.ok() override fun ok(): String = t.ok()
} }
@@ -1,9 +1,11 @@
// WITH_RUNTIME
interface IQ { interface IQ {
fun ok(): String fun ok(): String
} }
inline class X(val t: IQ): IQ { @JvmInline
value class X(val t: IQ): IQ {
override fun ok(): String = t.ok() override fun ok(): String = t.ok()
} }
@@ -1,10 +1,13 @@
// WITH_RUNTIME
interface IBase interface IBase
interface IQ : IBase { interface IQ : IBase {
fun ok(): String fun ok(): String
} }
inline class X(val t: IQ): IQ { @JvmInline
value class X(val t: IQ): IQ {
override fun ok(): String = t.ok() override fun ok(): String = t.ok()
} }
@@ -1,10 +1,13 @@
// WITH_RUNTIME
interface IBase interface IBase
interface IQ : IBase { interface IQ : IBase {
fun ok(): String fun ok(): String
} }
inline class X(val t: IQ): IQ { @JvmInline
value class X(val t: IQ): IQ {
override fun ok(): String = t.ok() override fun ok(): String = t.ok()
} }
@@ -1,4 +1,7 @@
inline class X(val x: Any) // WITH_RUNTIME
@JvmInline
value class X(val x: Any)
interface IFoo<T> { interface IFoo<T> {
fun foo(): T fun foo(): T
@@ -1,3 +1,5 @@
// WITH_RUNTIME
interface IFoo1<out T> { interface IFoo1<out T> {
fun foo(): T fun foo(): T
} }
@@ -6,7 +8,8 @@ interface IFoo2<out T> {
fun foo(): T fun foo(): T
} }
inline class X(val x: String) @JvmInline
value class X(val x: String)
class Test : IFoo1<X>, IFoo2<X> { class Test : IFoo1<X>, IFoo2<X> {
override fun foo(): X = X("OK") override fun foo(): X = X("OK")
@@ -1,10 +1,12 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(private val value: Int) { @JvmInline
value class UInt(private val value: Int) {
fun asInt() = value fun asInt() = value
} }
inline class UIntArray(private val intArray: IntArray) { @JvmInline
value class UIntArray(private val intArray: IntArray) {
operator fun get(index: Int): UInt = UInt(intArray[index]) operator fun get(index: Int): UInt = UInt(intArray[index])
operator fun set(index: Int, value: UInt) { operator fun set(index: Int, value: UInt) {
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(private val value: Int) { @JvmInline
value class UInt(private val value: Int) {
operator fun plus(other: UInt): UInt = UInt(value + other.asValue()) operator fun plus(other: UInt): UInt = UInt(value + other.asValue())
fun asValue(): Int = value fun asValue(): Int = value
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class IC(val x: String) @JvmInline
value class IC(val x: String)
interface I<T> { interface I<T> {
fun foo(): T fun foo(): T
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Result<T>(val a: Any?) { @JvmInline
value class Result<T>(val a: Any?) {
fun getOrThrow(): T = a as T fun getOrThrow(): T = a as T
} }
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class InlinedComparable(val x: Int) : Comparable<InlinedComparable> { @JvmInline
value class InlinedComparable(val x: Int) : Comparable<InlinedComparable> {
override fun compareTo(other: InlinedComparable): Int { override fun compareTo(other: InlinedComparable): Int {
return x.compareTo(other.x) return x.compareTo(other.x)
} }
@@ -12,7 +13,8 @@ interface Base<T> {
fun Base<T>.foo(a: Base<T>, b: T): Base<T> fun Base<T>.foo(a: Base<T>, b: T): Base<T>
} }
inline class InlinedBase(val x: Int) : Base<InlinedBase> { @JvmInline
value class InlinedBase(val x: Int) : Base<InlinedBase> {
override fun Base<InlinedBase>.foo(a: Base<InlinedBase>, b: InlinedBase): Base<InlinedBase> { override fun Base<InlinedBase>.foo(a: Base<InlinedBase>, b: InlinedBase): Base<InlinedBase> {
return if (a is InlinedBase) InlinedBase(a.x + b.x) else this return if (a is InlinedBase) InlinedBase(a.x + b.x) else this
} }
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Props(val intArray: IntArray) { @JvmInline
value class Props(val intArray: IntArray) {
val size get() = intArray.size val size get() = intArray.size
fun foo(): Int { fun foo(): Int {
@@ -2,9 +2,12 @@
// FULL_JDK // FULL_JDK
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
// WITH_RUNTIME
import java.lang.reflect.InvocationTargetException import java.lang.reflect.InvocationTargetException
inline class Simple(val x: String) { @JvmInline
value class Simple(val x: String) {
fun somethingWeird() {} fun somethingWeird() {}
} }
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
inline class UInt(val x: Int) @JvmInline
value class UInt(val x: Int)
inline class UIntArray(private val storage: IntArray) : Collection<UInt> { @JvmInline
value class UIntArray(private val storage: IntArray) : Collection<UInt> {
public override val size: Int get() = storage.size public override val size: Int get() = storage.size
override operator fun iterator() = TODO() override operator fun iterator() = TODO()
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun Z.test() = x fun Z.test() = x
fun L.test() = x fun L.test() = x
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
val Z.xx get() = x val Z.xx get() = x
val L.xx get() = x val L.xx get() = x
@@ -1,15 +1,17 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) { @JvmInline
value class Z(val x: Int) {
fun test() = x fun test() = x
} }
inline class L(val x: Long) { @JvmInline
value class L(val x: Long) {
fun test() = x fun test() = x
} }
inline class S(val x: String) { @JvmInline
value class S(val x: String) {
fun test() = x fun test() = x
} }
@@ -1,15 +1,17 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) { @JvmInline
value class Z(val x: Int) {
val xx get() = x val xx get() = x
} }
inline class L(val x: Long) { @JvmInline
value class L(val x: Long) {
val xx get() = x val xx get() = x
} }
inline class S(val x: String) { @JvmInline
value class S(val x: String) {
val xx get() = x val xx get() = x
} }
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun box(): String { fun box(): String {
if (Z(42)::x.get() != 42) throw AssertionError() if (Z(42)::x.get() != 42) throw AssertionError()
@@ -1,8 +1,8 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
import kotlin.test.assertEquals import kotlin.test.assertEquals
inline class Z(val x: Int) @JvmInline
value class Z(val x: Int)
class Outer(val z1: Z) { class Outer(val z1: Z) {
inner class Inner(val z2: Z) inner class Inner(val z2: Z)
@@ -2,9 +2,12 @@
// WASM_MUTE_REASON: IGNORED_IN_JS // WASM_MUTE_REASON: IGNORED_IN_JS
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE // IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE
// WITH_REFLECT // WITH_REFLECT
// WITH_RUNTIME
import kotlin.test.* import kotlin.test.*
inline class Z(val s: String) @JvmInline
value class Z(val s: String)
fun box(): String { fun box(): String {
val a = Z("a") val a = Z("a")
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun test(aZ: Z, aL: L, aS: S) = "${aZ.x} ${aL.x} ${aS.x}" fun test(aZ: Z, aL: L, aS: S) = "${aZ.x} ${aL.x} ${aS.x}"
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun Z.test() = x fun Z.test() = x
fun L.test() = x fun L.test() = x
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
val Z.xx get() = x val Z.xx get() = x
val L.xx get() = x val L.xx get() = x
@@ -1,10 +1,12 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
import kotlin.test.assertEquals import kotlin.test.assertEquals
inline class Z(internal val x: Int) @JvmInline
inline class L(internal val x: Long) value class Z(internal val x: Int)
inline class S(internal val x: String) @JvmInline
value class L(internal val x: Long)
@JvmInline
value class S(internal val x: String)
fun box(): String { fun box(): String {
assertEquals(42, Z::x.get(Z(42))) assertEquals(42, Z::x.get(Z(42)))
@@ -1,15 +1,17 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) { @JvmInline
value class Z(val x: Int) {
fun test() = x fun test() = x
} }
inline class L(val x: Long) { @JvmInline
value class L(val x: Long) {
fun test() = x fun test() = x
} }
inline class S(val x: String) { @JvmInline
value class S(val x: String) {
fun test() = x fun test() = x
} }
@@ -1,15 +1,17 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) { @JvmInline
value class Z(val x: Int) {
val xx get() = x val xx get() = x
} }
inline class L(val x: Long) { @JvmInline
value class L(val x: Long) {
val xx get() = x val xx get() = x
} }
inline class S(val x: String) { @JvmInline
value class S(val x: String) {
val xx get() = x val xx get() = x
} }
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun box(): String { fun box(): String {
if (42.let(::Z).x != 42) throw AssertionError() if (42.let(::Z).x != 42) throw AssertionError()
@@ -1,9 +1,11 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
inline class L(val x: Long) value class Z(val x: Int)
inline class S(val x: String) @JvmInline
value class L(val x: Long)
@JvmInline
value class S(val x: String)
fun box(): String { fun box(): String {
if ((Z::x).get(Z(42)) != 42) throw AssertionError() if ((Z::x).get(Z(42)) != 42) throw AssertionError()
@@ -1,20 +1,22 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
import kotlin.test.assertEquals import kotlin.test.assertEquals
inline class Z(private val x: Int) { @JvmInline
value class Z(private val x: Int) {
companion object { companion object {
val xref = Z::x val xref = Z::x
} }
} }
inline class L(private val x: Long) { @JvmInline
value class L(private val x: Long) {
companion object { companion object {
val xref = L::x val xref = L::x
} }
} }
inline class S(private val x: String) { @JvmInline
value class S(private val x: String) {
companion object { companion object {
val xref = S::x val xref = S::x
} }
@@ -1,6 +1,6 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
value class Z(val x: Int)
class C(var z: Z) class C(var z: Z)
@@ -1,6 +1,6 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
value class Z(val x: Int)
class C(var z: Z) class C(var z: Z)
@@ -1,6 +1,6 @@
// !LANGUAGE: +InlineClasses
// WITH_RUNTIME // WITH_RUNTIME
inline class Z(val x: Int) @JvmInline
value class Z(val x: Int)
var topLevel = Z(42) var topLevel = Z(42)
@@ -1,4 +1,7 @@
inline class R(val x: Any) // WITH_RUNTIME
@JvmInline
value class R(val x: Any)
fun useR(r: R) { fun useR(r: R) {
if (r.x as String != "OK") throw AssertionError("$r") if (r.x as String != "OK") throw AssertionError("$r")
@@ -1,4 +1,7 @@
inline class Value(val value: Any) // WITH_RUNTIME
@JvmInline
value class Value(val value: Any)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,4 +1,7 @@
inline class Value(val value: Any?) // WITH_RUNTIME
@JvmInline
value class Value(val value: Any?)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,4 +1,7 @@
inline class Value(val value: Int) // WITH_RUNTIME
@JvmInline
value class Value(val value: Int)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,4 +1,7 @@
inline class Value(val value: Int?) // WITH_RUNTIME
@JvmInline
value class Value(val value: Int?)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,4 +1,7 @@
inline class Value(val value: Any) // WITH_RUNTIME
@JvmInline
value class Value(val value: Any)
fun foo(value: Value?) = value?.value as String? fun foo(value: Value?) = value?.value as String?
@@ -1,4 +1,7 @@
inline class Value(val value: String) // WITH_RUNTIME
@JvmInline
value class Value(val value: String)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,4 +1,7 @@
inline class Value(val value: String?) // WITH_RUNTIME
@JvmInline
value class Value(val value: String?)
object Foo { object Foo {
fun foo(value: Value) { fun foo(value: Value) {
@@ -1,7 +1,8 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
// WITH_REFLECT // WITH_REFLECT
inline class Foo(val x: String) { @JvmInline
value class Foo(val x: String) {
fun bar(f: Foo, i: Int): Foo = Foo(x + f.x + i) fun bar(f: Foo, i: Int): Foo = Foo(x + f.x + i)
} }
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Foo<T>(val x: Any) { @JvmInline
value class Foo<T>(val x: Any) {
fun bar() {} fun bar() {}
} }
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Foo(val value: Int) @JvmInline
value class Foo(val value: Int)
fun <T> id(x: T): T = x fun <T> id(x: T): T = x
inline fun <T> inlinedId(x: T): T = x inline fun <T> inlinedId(x: T): T = x
@@ -1,12 +1,15 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class WithPrimitive(val a: Int) @JvmInline
value class WithPrimitive(val a: Int)
fun takeWithPrimitive(a: WithPrimitive) {} fun takeWithPrimitive(a: WithPrimitive) {}
inline class WithReference(val a: Any) @JvmInline
value class WithReference(val a: Any)
fun takeWithReference(a: WithReference) {} fun takeWithReference(a: WithReference) {}
inline class WithNullableReference(val a: Any?) @JvmInline
value class WithNullableReference(val a: Any?)
fun takeWithNullableReference(a: WithNullableReference) {} fun takeWithNullableReference(a: WithNullableReference) {}
fun foo(a: WithPrimitive?, b: WithPrimitive) { fun foo(a: WithPrimitive?, b: WithPrimitive) {
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class IC(val x: Int) @JvmInline
value class IC(val x: Int)
interface I<T> { interface I<T> {
fun foo(t: T): T fun foo(t: T): T
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class ULong(val l: Long) @JvmInline
value class ULong(val l: Long)
fun nonLocal(): ULong? { fun nonLocal(): ULong? {
val u1 = ULong(1) val u1 = ULong(1)
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Foo(val a: Int) { @JvmInline
value class Foo(val a: Int) {
fun member(): String = "" fun member(): String = ""
fun asResult() = a fun asResult() = a
@@ -1,7 +1,9 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class InlineNotNullPrimitive(val x: Int) @JvmInline
inline class InlineNotNullReference(val y: String) value class InlineNotNullPrimitive(val x: Int)
@JvmInline
value class InlineNotNullReference(val y: String)
fun <T> testNotNullPrimitive(a: Any, b: T, c: InlineNotNullPrimitive, d: InlineNotNullPrimitive?) {} fun <T> testNotNullPrimitive(a: Any, b: T, c: InlineNotNullPrimitive, d: InlineNotNullPrimitive?) {}
fun <T> testNotNullReference(a: Any, b: T, c: InlineNotNullReference, d: InlineNotNullReference?) {} fun <T> testNotNullReference(a: Any, b: T, c: InlineNotNullReference, d: InlineNotNullReference?) {}
@@ -1,9 +1,13 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class InlineNotNullPrimitive(val x: Int) @JvmInline
inline class InlineNullablePrimitive(val x: Int?) value class InlineNotNullPrimitive(val x: Int)
inline class InlineNotNullReference(val a: Any) @JvmInline
inline class InlineNullableReference(val a: Any?) value class InlineNullablePrimitive(val x: Int?)
@JvmInline
value class InlineNotNullReference(val a: Any)
@JvmInline
value class InlineNullableReference(val a: Any?)
fun test1(a: InlineNotNullPrimitive) { fun test1(a: InlineNotNullPrimitive) {
val a0 = a val a0 = a
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class IC(val x: Int) @JvmInline
value class IC(val x: Int)
abstract class A<T> { abstract class A<T> {
var t: T? = null var t: T? = null
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Foo(val x: Int) { @JvmInline
value class Foo(val x: Int) {
fun empty() = "" fun empty() = ""
fun withParam(a: String) = a fun withParam(a: String) = a
fun withInlineClassParam(f: Foo) = f.toString() fun withInlineClassParam(f: Foo) = f.toString()
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(val s: Int) @JvmInline
value class UInt(val s: Int)
fun test(a1: Any, a2: UInt?, a3: Any?, a4: Any?): Int { fun test(a1: Any, a2: UInt?, a3: Any?, a4: Any?): Int {
val b1 = a1 as UInt val b1 = a1 as UInt
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(val u: Int) { @JvmInline
value class UInt(val u: Int) {
override fun toString(): String { override fun toString(): String {
return "UInt: $u" return "UInt: $u"
} }
@@ -1,7 +1,9 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class UInt(val value: Int) @JvmInline
inline class ULong(val value: Long) value class UInt(val value: Int)
@JvmInline
value class ULong(val value: Long)
fun foo(u: UInt, f: (UInt) -> ULong): ULong = f(u) fun foo(u: UInt, f: (UInt) -> ULong): ULong = f(u)
inline fun inlinedFoo(u: UInt, f: (UInt) -> ULong): ULong = f(u) inline fun inlinedFoo(u: UInt, f: (UInt) -> ULong): ULong = f(u)
@@ -1,6 +1,7 @@
// !LANGUAGE: +InlineClasses // WITH_RUNTIME
inline class Result<T>(val a: Any?) { @JvmInline
value class Result<T>(val a: Any?) {
fun typed(): T = a as T fun typed(): T = a as T
} }
@@ -1,6 +1,9 @@
// WITH_RUNTIME
var result = "Fail" var result = "Fail"
inline class A(val value: String) { @JvmInline
value class A(val value: String) {
init { init {
class B { class B {
init { init {
@@ -1,3 +1,4 @@
// WITH_RUNTIME
// WITH_REFLECT // WITH_REFLECT
// TARGET_BACKEND: JVM // TARGET_BACKEND: JVM
@@ -5,10 +6,14 @@ package root
import kotlin.reflect.KClass import kotlin.reflect.KClass
inline class IcInt(val x: Int) @JvmInline
inline class IcLong(val l: Long) value class IcInt(val x: Int)
inline class IcAny(val a: Any?) @JvmInline
inline class IcOverIc(val o: IcLong) value class IcLong(val l: Long)
@JvmInline
value class IcAny(val a: Any?)
@JvmInline
value class IcOverIc(val o: IcLong)
fun check(c: KClass<*>, s: String) { fun check(c: KClass<*>, s: String) {
if (c.toString() != s) error("Fail, expected: $s, actual: $c") if (c.toString() != s) error("Fail, expected: $s, actual: $c")

Some files were not shown because too many files have changed in this diff Show More