diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt index 8f0777deb7e..41796e957b8 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt @@ -31,6 +31,7 @@ import java.util.HashMap import org.jetbrains.jet.lang.resolve.name.Name import org.jetbrains.jet.descriptors.serialization.Flags import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationAndConstantLoader +import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames public abstract class AbstractBinaryClassAnnotationAndConstantLoader( storageManager: StorageManager, @@ -49,6 +50,15 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader ): KotlinJvmBinaryClass.AnnotationArgumentVisitor? + private fun loadAnnotationIfNotSpecial( + annotationClassId: ClassId, + result: MutableList + ): KotlinJvmBinaryClass.AnnotationArgumentVisitor? { + if (JvmAnnotationNames.isSpecialAnnotation(annotationClassId, true)) return null + + return loadAnnotation(annotationClassId, result) + } + override fun loadClassAnnotations(classProto: ProtoBuf.Class, nameResolver: NameResolver): List { val classId = nameResolver.getClassId(classProto.getFqName()) val kotlinClass = findKotlinClassById(classId) @@ -63,7 +73,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader() memberAnnotations[paramSignature] = result } - return loadAnnotation(classId, result) + return loadAnnotationIfNotSpecial(classId, result) } } @@ -223,7 +233,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader() override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? { - return loadAnnotation(classId, result) + return loadAnnotationIfNotSpecial(classId, result) } override fun visitEnd() { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt index 07c12925ad3..35f4c509d3e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/BinaryClassAnnotationAndConstantLoaderImpl.kt @@ -16,7 +16,6 @@ package org.jetbrains.jet.lang.resolve.kotlin -import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames import org.jetbrains.jet.lang.resolve.java.resolver.DescriptorResolverUtils import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor @@ -76,8 +75,6 @@ public class BinaryClassAnnotationAndConstantLoaderImpl( annotationClassId: ClassId, result: MutableList ): KotlinJvmBinaryClass.AnnotationArgumentVisitor? { - if (JvmAnnotationNames.isSpecialAnnotation(annotationClassId, true)) return null - val annotationClass = resolveClass(annotationClassId) return object : KotlinJvmBinaryClass.AnnotationArgumentVisitor {