Drop deprecated nested classes from Kotlin metadata annotations
This commit is contained in:
@@ -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<String> classes = new ArrayList<String>(1);
|
||||
boolean local = false;
|
||||
|
||||
|
||||
+1
-1
@@ -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"
|
||||
|
||||
@@ -25,7 +25,7 @@ fun box(): String {
|
||||
assertEquals("[[Ljava.lang.String;", Array<Array<String>>::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
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ fun box(): String {
|
||||
assertEquals("kotlin.Array", Array<Array<String>>::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
|
||||
|
||||
@@ -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";
|
||||
|
||||
+4
-1
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user