Do not write and read KotlinInterfaceDefaultImpls
This was only used in InlineTestUtil.kt and had no effect in the condition
This commit is contained in:
@@ -24,9 +24,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl
|
||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.KOTLIN_INTERFACE_DEFAULT_IMPLS
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
@@ -151,10 +149,9 @@ class InterfaceImplBodyCodegen(
|
||||
override fun generateKotlinAnnotation() {
|
||||
(v as InterfaceImplClassBuilder).stopCounting()
|
||||
|
||||
v.newAnnotation(AsmUtil.asmDescByFqNameWithoutInnerClasses(KOTLIN_INTERFACE_DEFAULT_IMPLS), true).visitEnd()
|
||||
AsmUtil.writeKotlinSyntheticClassAnnotation(v, state)
|
||||
|
||||
writeSyntheticClassMetadata(v, KotlinClassHeader.SyntheticClassKind.INTERFACE_DEFAULT_IMPLS);
|
||||
writeSyntheticClassMetadata(v);
|
||||
}
|
||||
|
||||
override fun done() {
|
||||
|
||||
@@ -161,7 +161,7 @@ class PropertyReferenceCodegen(
|
||||
override fun generateKotlinAnnotation() {
|
||||
writeKotlinSyntheticClassAnnotation(v, state)
|
||||
|
||||
writeSyntheticClassMetadata(v, null)
|
||||
writeSyntheticClassMetadata(v)
|
||||
}
|
||||
|
||||
fun putInstanceOnStack(): StackValue =
|
||||
|
||||
@@ -96,7 +96,7 @@ public class SamWrapperCodegen {
|
||||
|
||||
writeKotlinSyntheticClassAnnotation(cv, state);
|
||||
|
||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cv, null);
|
||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cv);
|
||||
|
||||
// e.g. ASM type for Function2
|
||||
Type functionAsmType = typeMapper.mapType(functionType);
|
||||
|
||||
+1
-1
@@ -60,7 +60,7 @@ public class MappingClassesForWhenByEnumCodegen {
|
||||
|
||||
writeKotlinSyntheticClassAnnotation(cb, state);
|
||||
|
||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, null);
|
||||
WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb);
|
||||
|
||||
cb.done();
|
||||
}
|
||||
|
||||
@@ -31,10 +31,8 @@ fun writeKotlinMetadata(cb: ClassBuilder, kind: KotlinClassHeader.Kind, action:
|
||||
av.visitEnd()
|
||||
}
|
||||
|
||||
fun writeSyntheticClassMetadata(cb: ClassBuilder, kind: KotlinClassHeader.SyntheticClassKind?) {
|
||||
fun writeSyntheticClassMetadata(cb: ClassBuilder) {
|
||||
writeKotlinMetadata(cb, KotlinClassHeader.Kind.SYNTHETIC_CLASS) { av ->
|
||||
if (kind != null) {
|
||||
av.visit(JvmAnnotationNames.SYNTHETIC_CLASS_KIND_FIELD_NAME, kind.id)
|
||||
}
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ public abstract class C {
|
||||
public abstract method getBar(): int
|
||||
}
|
||||
|
||||
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
|
||||
@kotlin.jvm.internal.KotlinSyntheticClass
|
||||
@kotlin.Metadata
|
||||
public final class D$DefaultImpls {
|
||||
|
||||
@@ -118,7 +118,6 @@ public abstract class A8 {
|
||||
public method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||
}
|
||||
|
||||
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
|
||||
@kotlin.jvm.internal.KotlinSyntheticClass
|
||||
@kotlin.Metadata
|
||||
public final class I1$DefaultImpls {
|
||||
@@ -137,7 +136,6 @@ public abstract class I1 {
|
||||
public abstract method toArray(p0: java.lang.Object[]): java.lang.Object[]
|
||||
}
|
||||
|
||||
@kotlin.jvm.internal.KotlinInterfaceDefaultImpls
|
||||
@kotlin.jvm.internal.KotlinSyntheticClass
|
||||
@kotlin.Metadata
|
||||
public final class I2$DefaultImpls {
|
||||
|
||||
@@ -138,7 +138,7 @@ abstract class AbstractBytecodeListingTest : CodegenTestCase() {
|
||||
|
||||
override fun visitAnnotation(desc: String, visible: Boolean): AnnotationVisitor? {
|
||||
val name = Type.getType(desc).className
|
||||
classAnnotations.add("@$name ")
|
||||
classAnnotations.add("@$name")
|
||||
return super.visitAnnotation(desc, visible)
|
||||
}
|
||||
|
||||
|
||||
@@ -171,7 +171,7 @@ object InlineTestUtil {
|
||||
}
|
||||
|
||||
private fun isClassOrPackagePartKind(header: KotlinClassHeader): Boolean {
|
||||
return (header.kind == KotlinClassHeader.Kind.CLASS && !header.isLocalClass) || header.isInterfaceDefaultImpls
|
||||
return header.kind == KotlinClassHeader.Kind.CLASS && !header.isLocalClass
|
||||
}
|
||||
|
||||
private fun getClassHeader(file: OutputFile): KotlinClassHeader {
|
||||
|
||||
+1
-5
@@ -16,7 +16,6 @@
|
||||
|
||||
package org.jetbrains.kotlin.load.java;
|
||||
|
||||
import kotlin.collections.SetsKt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
@@ -36,7 +35,6 @@ public final class JvmAnnotationNames {
|
||||
public static final FqName KOTLIN_MULTIFILE_CLASS_PART = new FqName("kotlin.jvm.internal.KotlinMultifileClassPart");
|
||||
public static final FqName KOTLIN_SYNTHETIC_CLASS = new FqName("kotlin.jvm.internal.KotlinSyntheticClass");
|
||||
public static final FqName KOTLIN_FUNCTION = new FqName("kotlin.jvm.internal.KotlinFunction");
|
||||
public static final FqName KOTLIN_INTERFACE_DEFAULT_IMPLS = new FqName("kotlin.jvm.internal.KotlinInterfaceDefaultImpls");
|
||||
public static final FqName KOTLIN_LOCAL_CLASS = new FqName("kotlin.jvm.internal.KotlinLocalClass");
|
||||
|
||||
public static final String VERSION_FIELD_NAME = "version";
|
||||
@@ -75,9 +73,7 @@ public final class JvmAnnotationNames {
|
||||
private static final Set<JvmClassName> NULLABILITY_ANNOTATIONS = new HashSet<JvmClassName>();
|
||||
private static final Set<JvmClassName> SPECIAL_META_ANNOTATIONS = new HashSet<JvmClassName>();
|
||||
static {
|
||||
for (FqName fqName : Arrays.asList(
|
||||
METADATA, KOTLIN_CLASS, KOTLIN_SYNTHETIC_CLASS, KOTLIN_INTERFACE_DEFAULT_IMPLS, KOTLIN_LOCAL_CLASS
|
||||
)) {
|
||||
for (FqName fqName : Arrays.asList(METADATA, KOTLIN_CLASS, KOTLIN_SYNTHETIC_CLASS, KOTLIN_LOCAL_CLASS)) {
|
||||
SPECIAL_ANNOTATIONS.add(JvmClassName.byFqNameWithoutInnerClasses(fqName));
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -26,7 +26,6 @@ class KotlinClassHeader(
|
||||
val data: Array<String>?,
|
||||
val strings: Array<String>?,
|
||||
val multifileClassName: String?,
|
||||
val isInterfaceDefaultImpls: Boolean,
|
||||
val isLocalClass: Boolean
|
||||
) {
|
||||
// See kotlin.Metadata
|
||||
@@ -48,8 +47,7 @@ class KotlinClassHeader(
|
||||
|
||||
enum class SyntheticClassKind(val id: Int) {
|
||||
FUNCTION(1),
|
||||
LOCAL_CLASS(2),
|
||||
INTERFACE_DEFAULT_IMPLS(3);
|
||||
LOCAL_CLASS(2);
|
||||
|
||||
companion object {
|
||||
private val entryById = values().toMapBy(SyntheticClassKind::id)
|
||||
|
||||
+1
-7
@@ -54,7 +54,6 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor
|
||||
private String[] strings = null;
|
||||
private KotlinClassHeader.Kind headerKind = null;
|
||||
private KotlinClassHeader.SyntheticClassKind syntheticClassKind = null;
|
||||
private boolean isInterfaceDefaultImpls = false;
|
||||
private boolean isLocalClass = false;
|
||||
|
||||
@Nullable
|
||||
@@ -79,7 +78,6 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor
|
||||
data,
|
||||
strings,
|
||||
multifileClassName,
|
||||
isInterfaceDefaultImpls || syntheticClassKind == KotlinClassHeader.SyntheticClassKind.INTERFACE_DEFAULT_IMPLS,
|
||||
isLocalClass || syntheticClassKind == KotlinClassHeader.SyntheticClassKind.LOCAL_CLASS
|
||||
);
|
||||
}
|
||||
@@ -100,11 +98,7 @@ public class ReadKotlinClassHeaderAnnotationVisitor implements AnnotationVisitor
|
||||
|
||||
if (IGNORE_OLD_METADATA) return null;
|
||||
|
||||
if (KOTLIN_INTERFACE_DEFAULT_IMPLS.equals(fqName)) {
|
||||
isInterfaceDefaultImpls = true;
|
||||
return null;
|
||||
}
|
||||
else if (KOTLIN_LOCAL_CLASS.equals(fqName)) {
|
||||
if (KOTLIN_LOCAL_CLASS.equals(fqName)) {
|
||||
isLocalClass = true;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,6 @@ internal annotation class Metadata(
|
||||
*
|
||||
* 1 Anonymous class for a lambda or a function reference
|
||||
* 2 Local class or anonymous object literal
|
||||
* 3 Implicit nested DefaultImpls class for an interface
|
||||
*
|
||||
* A value other than this (e.g. 0) or a missing value means this is a synthetic class of some other sort.
|
||||
* This kind has no effect on the compiler because it doesn't read synthetic class metadata. It may be used in IDEs and tools.
|
||||
|
||||
Reference in New Issue
Block a user