e0c8142106
'equals' from any made available for overriding in inline classes 'typed' equals made available for definition in inline classes 'typed' equals definition made compulsory if 'untyped' is overridden 'operator' keyword is allowed in 'typed' equals definition ^KT-24874: Fixed
45 lines
1.5 KiB
Kotlin
Vendored
45 lines
1.5 KiB
Kotlin
Vendored
// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses, +CustomEqualsInInlineClasses
|
|
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
|
|
inline class IC1(val x: Any) {
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>() {}
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>(x: Any) {}
|
|
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>unbox<!>() {}
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>unbox<!>(x: Any) {}
|
|
|
|
<!INEFFICIENT_EQUALS_OVERRIDING_IN_INLINE_CLASS!>override fun equals(other: Any?): Boolean<!> = true
|
|
override fun hashCode(): Int = 0
|
|
}
|
|
|
|
inline class IC2(val x: Any) {
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>(x: Any) {}
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>(): Any = TODO()
|
|
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>unbox<!>(x: Any) {}
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>unbox<!>(): Any = TODO()
|
|
|
|
fun equals(my: Any, other: Any): Boolean = true
|
|
fun hashCode(a: Any): Int = 0
|
|
}
|
|
|
|
inline class IC3(val x: Any) {
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>(x: Any): Any = TODO()
|
|
fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>unbox<!>(x: Any): Any = TODO()
|
|
|
|
fun equals(): Boolean = true
|
|
}
|
|
|
|
interface WithBox {
|
|
fun box(): String
|
|
}
|
|
|
|
inline class IC4(val s: String) : WithBox {
|
|
override fun <!RESERVED_MEMBER_INSIDE_VALUE_CLASS!>box<!>(): String = ""
|
|
}
|
|
|
|
inline class IC5(val a: String) {
|
|
constructor(i: Int) : this(i.toString()) <!SECONDARY_CONSTRUCTOR_WITH_BODY_INSIDE_VALUE_CLASS!>{<!>
|
|
TODO("something")
|
|
}
|
|
} |