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 {