Correct descriptor shape for @JvmRecord annotated classes

This commit adds relevant functions: hashCode, toString, equals
(if the class is not a data class)
And supertype j.l.Record

It only affects descriptor contents, i.e. works for FE

^KT-43677 In Progress
This commit is contained in:
Denis.Zharkov
2020-11-25 18:42:51 +03:00
parent ca2e199b53
commit bef50c0342
12 changed files with 193 additions and 29 deletions
@@ -0,0 +1,11 @@
// !LANGUAGE: +JvmRecordSupport
@JvmRecord
class BasicRecord(val x: String)
@JvmRecord
data class BasicDataRecord(val x: String)
@JvmRecord
class BasicRecordWithSuperClass(val x: String) : Record()
@@ -0,0 +1,27 @@
package
@kotlin.jvm.JvmRecord public final data class BasicDataRecord : java.lang.Record {
public constructor BasicDataRecord(/*0*/ x: kotlin.String)
public final val x: kotlin.String
public final operator /*synthesized*/ fun component1(): kotlin.String
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.String = ...): BasicDataRecord
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
@kotlin.jvm.JvmRecord public final class BasicRecord : java.lang.Record {
public constructor BasicRecord(/*0*/ x: kotlin.String)
public final val x: kotlin.String
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}
@kotlin.jvm.JvmRecord public final class BasicRecordWithSuperClass : java.lang.Record {
public constructor BasicRecordWithSuperClass(/*0*/ x: kotlin.String)
public final val x: kotlin.String
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*synthesized*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*synthesized*/ fun toString(): kotlin.String
}