diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/FileBasedKotlinClass.java b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/FileBasedKotlinClass.java index f59d77e8bf6..a9fffeca290 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/FileBasedKotlinClass.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/FileBasedKotlinClass.java @@ -21,7 +21,6 @@ import kotlin.jvm.functions.Function3; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.SourceElement; -import org.jetbrains.kotlin.load.java.JvmAnnotationNames; import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader; import org.jetbrains.kotlin.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor; import org.jetbrains.kotlin.name.ClassId; @@ -266,11 +265,6 @@ public abstract class FileBasedKotlinClass implements KotlinJvmBinaryClass { return ClassId.topLevel(new FqName(name.replace('/', '.'))); } - // TODO: this is a hack which can be dropped once JVM back-end begins to write InnerClasses attribute for all referenced classes - if (name.equals(JvmAnnotationNames.KotlinSyntheticClass.KIND_INTERNAL_NAME)) { - return JvmAnnotationNames.KotlinSyntheticClass.KIND_CLASS_ID; - } - List classes = new ArrayList(1); boolean local = false; diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/classes/classSimpleName.kt b/compiler/testData/codegen/boxWithStdlib/reflection/classes/classSimpleName.kt index 7079ca9ea11..947ae376a42 100644 --- a/compiler/testData/codegen/boxWithStdlib/reflection/classes/classSimpleName.kt +++ b/compiler/testData/codegen/boxWithStdlib/reflection/classes/classSimpleName.kt @@ -5,7 +5,7 @@ class Klass fun box(): String { assertEquals("Klass", Klass::class.simpleName) assertEquals("Date", java.util.Date::class.simpleName) - assertEquals("Kind", kotlin.jvm.internal.KotlinSyntheticClass.Kind::class.simpleName) + assertEquals("ObjectRef", kotlin.jvm.internal.Ref.ObjectRef::class.simpleName) assertEquals("Void", java.lang.Void::class.simpleName) return "OK" diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/classes/jvmName.kt b/compiler/testData/codegen/boxWithStdlib/reflection/classes/jvmName.kt index c074ec08039..3cf93e0d87a 100644 --- a/compiler/testData/codegen/boxWithStdlib/reflection/classes/jvmName.kt +++ b/compiler/testData/codegen/boxWithStdlib/reflection/classes/jvmName.kt @@ -25,7 +25,7 @@ fun box(): String { assertEquals("[[Ljava.lang.String;", Array>::class.jvmName) assertEquals("java.util.Date", java.util.Date::class.jvmName) - assertEquals("kotlin.jvm.internal.KotlinSyntheticClass\$Kind", kotlin.jvm.internal.KotlinSyntheticClass.Kind::class.jvmName) + assertEquals("kotlin.jvm.internal.Ref\$ObjectRef", kotlin.jvm.internal.Ref.ObjectRef::class.jvmName) assertEquals("java.lang.Void", java.lang.Void::class.jvmName) class Local diff --git a/compiler/testData/codegen/boxWithStdlib/reflection/classes/qualifiedName.kt b/compiler/testData/codegen/boxWithStdlib/reflection/classes/qualifiedName.kt index 93e4820a909..7ab6ad02966 100644 --- a/compiler/testData/codegen/boxWithStdlib/reflection/classes/qualifiedName.kt +++ b/compiler/testData/codegen/boxWithStdlib/reflection/classes/qualifiedName.kt @@ -23,7 +23,7 @@ fun box(): String { assertEquals("kotlin.Array", Array>::class.qualifiedName) assertEquals("java.util.Date", java.util.Date::class.qualifiedName) - assertEquals("kotlin.jvm.internal.KotlinSyntheticClass.Kind", kotlin.jvm.internal.KotlinSyntheticClass.Kind::class.qualifiedName) + assertEquals("kotlin.jvm.internal.Ref.ObjectRef", kotlin.jvm.internal.Ref.ObjectRef::class.qualifiedName) assertEquals("java.lang.Void", java.lang.Void::class.qualifiedName) class Local diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java index 281ecf6b77e..6c8148f3b4e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAnnotationNames.java @@ -46,7 +46,6 @@ public final class JvmAnnotationNames { public static final FqName OLD_KOTLIN_SIGNATURE = new FqName("jet.runtime.typeinfo.KotlinSignature"); public static final String VERSION_FIELD_NAME = "version"; - public static final String KIND_FIELD_NAME = "kind"; public static final String FILE_PART_CLASS_NAMES_FIELD_NAME = "filePartClassNames"; public static final String MULTIFILE_CLASS_NAME_FIELD_NAME = "multifileClassName"; public static final String DATA_FIELD_NAME = "data"; @@ -72,9 +71,6 @@ public final class JvmAnnotationNames { public static class KotlinSyntheticClass { public static final JvmClassName CLASS_NAME = JvmClassName.byInternalName("kotlin/jvm/internal/KotlinSyntheticClass"); - public static final ClassId KIND_CLASS_ID = - ClassId.topLevel(CLASS_NAME.getFqNameForClassNameWithoutDollars()).createNestedClassId(Name.identifier("Kind")); - public static final String KIND_INTERNAL_NAME = JvmClassName.byClassId(KIND_CLASS_ID).getInternalName(); } public static final String OLD_ABI_VERSION_FIELD_NAME = "abiVersion"; diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java index 6d3bc9de532..22cde7139c2 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/ReadKotlinClassHeaderAnnotationVisitor.java @@ -286,7 +286,10 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor @Override public void visitEnum(@NotNull Name name, @NotNull ClassId enumClassId, @NotNull Name enumEntryName) { - if (KotlinSyntheticClass.KIND_CLASS_ID.equals(enumClassId) && KIND_FIELD_NAME.equals(name.asString())) { + if ("Kind".equals(enumClassId.getShortClassName().asString()) && + enumClassId.isNestedClass() && + enumClassId.getOuterClassId().equals(ClassId.topLevel(annotationClassName.getFqNameForClassNameWithoutDollars())) && + "kind".equals(name.asString())) { syntheticClassKind = enumEntryName.asString(); } } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinClass.java b/core/runtime.jvm/src/kotlin/jvm/internal/KotlinClass.java index b54eaa1db15..e821e6e0b39 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinClass.java +++ b/core/runtime.jvm/src/kotlin/jvm/internal/KotlinClass.java @@ -32,19 +32,4 @@ public @interface KotlinClass { String[] data(); String[] strings(); - - @Deprecated - Kind kind() default Kind.CLASS; - - @Deprecated - enum Kind { - CLASS, - - /** - * A class has kind LOCAL_CLASS if and only if it's not an anonymous object and its first non-class container is not a package. - */ - LOCAL_CLASS, - - ANONYMOUS_OBJECT, - } } diff --git a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinSyntheticClass.java b/core/runtime.jvm/src/kotlin/jvm/internal/KotlinSyntheticClass.java index 29281657929..67dd552a46f 100644 --- a/core/runtime.jvm/src/kotlin/jvm/internal/KotlinSyntheticClass.java +++ b/core/runtime.jvm/src/kotlin/jvm/internal/KotlinSyntheticClass.java @@ -28,20 +28,4 @@ public @interface KotlinSyntheticClass { int abiVersion(); int[] version() default {}; - - @Deprecated - Kind kind() default Kind.LOCAL_FUNCTION; - - @Deprecated - enum Kind { - PACKAGE_PART, - TRAIT_IMPL, - LOCAL_TRAIT_IMPL, - SAM_WRAPPER, - SAM_LAMBDA, - CALLABLE_REFERENCE_WRAPPER, - LOCAL_FUNCTION, - ANONYMOUS_FUNCTION, - WHEN_ON_ENUM_MAPPINGS, - } }