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:
Alexander Udalov
2016-01-17 23:10:46 +03:00
parent 7906ac63b5
commit e37bd4eba6
13 changed files with 11 additions and 32 deletions
@@ -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);
@@ -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 {
@@ -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));
}
@@ -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)
@@ -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;
}
-1
View File
@@ -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.