From e37bd4eba6564af2771a412b13d79ef09da77320 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Sun, 17 Jan 2016 23:10:46 +0300 Subject: [PATCH] Do not write and read KotlinInterfaceDefaultImpls This was only used in InlineTestUtil.kt and had no effect in the condition --- .../jetbrains/kotlin/codegen/InterfaceImplBodyCodegen.kt | 5 +---- .../jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt | 2 +- .../org/jetbrains/kotlin/codegen/SamWrapperCodegen.java | 2 +- .../codegen/when/MappingClassesForWhenByEnumCodegen.java | 2 +- .../org/jetbrains/kotlin/codegen/writeAnnotationUtil.kt | 6 ++---- .../testData/codegen/bytecodeListing/defaultImpls.txt | 1 - .../codegen/bytecodeListing/specialBridges/contains.txt | 2 -- .../kotlin/codegen/AbstractBytecodeListingTest.kt | 2 +- .../tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt | 2 +- .../jetbrains/kotlin/load/java/JvmAnnotationNames.java | 6 +----- .../kotlin/load/kotlin/header/KotlinClassHeader.kt | 4 +--- .../header/ReadKotlinClassHeaderAnnotationVisitor.java | 8 +------- core/runtime.jvm/src/kotlin/Metadata.kt | 1 - 13 files changed, 11 insertions(+), 32 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/InterfaceImplBodyCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/InterfaceImplBodyCodegen.kt index 4fb3ec571e1..b6cc476b0e5 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/InterfaceImplBodyCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/InterfaceImplBodyCodegen.kt @@ -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() { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt index 86e750cafa6..c122ed4d759 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/PropertyReferenceCodegen.kt @@ -161,7 +161,7 @@ class PropertyReferenceCodegen( override fun generateKotlinAnnotation() { writeKotlinSyntheticClassAnnotation(v, state) - writeSyntheticClassMetadata(v, null) + writeSyntheticClassMetadata(v) } fun putInstanceOnStack(): StackValue = diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/SamWrapperCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/SamWrapperCodegen.java index 6285472d0d4..3f0e094cc44 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/SamWrapperCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/SamWrapperCodegen.java @@ -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); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/when/MappingClassesForWhenByEnumCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/when/MappingClassesForWhenByEnumCodegen.java index 652b83aeaf0..ffb9ffad44b 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/when/MappingClassesForWhenByEnumCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/when/MappingClassesForWhenByEnumCodegen.java @@ -60,7 +60,7 @@ public class MappingClassesForWhenByEnumCodegen { writeKotlinSyntheticClassAnnotation(cb, state); - WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb, null); + WriteAnnotationUtilKt.writeSyntheticClassMetadata(cb); cb.done(); } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/writeAnnotationUtil.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/writeAnnotationUtil.kt index 9d303e5b80e..73fea5bd4ec 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/writeAnnotationUtil.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/writeAnnotationUtil.kt @@ -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 } } diff --git a/compiler/testData/codegen/bytecodeListing/defaultImpls.txt b/compiler/testData/codegen/bytecodeListing/defaultImpls.txt index 7570e5efeb3..d824764dd5b 100644 --- a/compiler/testData/codegen/bytecodeListing/defaultImpls.txt +++ b/compiler/testData/codegen/bytecodeListing/defaultImpls.txt @@ -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 { diff --git a/compiler/testData/codegen/bytecodeListing/specialBridges/contains.txt b/compiler/testData/codegen/bytecodeListing/specialBridges/contains.txt index 601539e7a50..ced76cb3b92 100644 --- a/compiler/testData/codegen/bytecodeListing/specialBridges/contains.txt +++ b/compiler/testData/codegen/bytecodeListing/specialBridges/contains.txt @@ -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 { diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt index a8074c0d24c..c72e8ca6bc3 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/AbstractBytecodeListingTest.kt @@ -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) } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt b/compiler/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt index 4f281a4a8bd..0e41230165b 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt @@ -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 { 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 493649b36cc..65b167626bb 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 @@ -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 NULLABILITY_ANNOTATIONS = new HashSet(); private static final Set SPECIAL_META_ANNOTATIONS = new HashSet(); 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)); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt index 033a9e66a82..25a96b12798 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/header/KotlinClassHeader.kt @@ -26,7 +26,6 @@ class KotlinClassHeader( val data: Array?, val strings: Array?, 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) 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 65ff57b50f6..92ad884016d 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 @@ -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; } diff --git a/core/runtime.jvm/src/kotlin/Metadata.kt b/core/runtime.jvm/src/kotlin/Metadata.kt index d66ba7fdaf3..4ac2655e205 100644 --- a/core/runtime.jvm/src/kotlin/Metadata.kt +++ b/core/runtime.jvm/src/kotlin/Metadata.kt @@ -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.