| // ISSUE: KT-89985 | |
| // LANGUAGE: +FullValueClasses | |
| // CHECK_BYTECODE_TEXT | |
| // FILE: Outer.java | |
| public class Outer { | |
| public static value record V(int x) {} | |
| public static record NV(int x) {} | |
| } | |
| // FILE: test.kt | |
| import java.lang.ref.WeakReference | |
| class A { | |
| class B(val x: Char) | |
| open class C(val x: Char) | |
| abstract class D(val x: Char) | |
| inner class E(val x: Char) | |
| interface F { | |
| val x: Char | |
| } | |
| enum class H { OK } | |
| @JvmInline | |
| value class I(val x: Char) | |
| object O | |
| companion object | |
| } | |
| class UseV(val v: Outer.V) | |
| class UseNV(val v: Outer.NV) | |
| fun box(): String { | |
| class Local | |
| val identityObjects = listOf<Any>( | |
| A.B('a'), A.C('a'), object : A.D('a') {}, A().E('a'), object : A.F { override val x: Char get() = 'a' }, A.H.OK, A.I('a'), | |
| A.O, A.Companion, Local(), | |
| ) | |
| for (o in identityObjects) { | |
| if (o.javaClass.isValue) return "${o.javaClass} must not be a value class" | |
| WeakReference(o) | |
| } | |
| return "OK" | |
| } | |
| // 3 public final static synchronized INNERCLASS A\$B A B | |
| // 3 public static synchronized INNERCLASS A\$C A C | |
| // 3 public static synchronized abstract INNERCLASS A\$D A D | |
| // 3 public final synchronized INNERCLASS A\$E A E | |
| // 3 public static abstract INNERCLASS A\$F A F | |
| // 3 public final static synchronized enum INNERCLASS A\$H A H | |
| // 3 public final static synchronized INNERCLASS A\$I A I | |
| // 3 public final static synchronized INNERCLASS A\$O A O | |
| // 3 public final static synchronized INNERCLASS A\$Companion A Companion | |
| // 2 public final static synchronized INNERCLASS TestKt\$box\$identityObjects\$1 null null | |
| // 2 public final static synchronized INNERCLASS TestKt\$box\$identityObjects\$2 null null | |
| // 2 public final static synchronized INNERCLASS TestKt\$box\$Local null Local | |
| // 1 public final static INNERCLASS Outer\$V Outer V | |
| // 1 public final static synchronized INNERCLASS Outer\$NV Outer NV |