Move check for special annotation to an abstract class
This commit is contained in:
+13
-3
@@ -31,6 +31,7 @@ import java.util.HashMap
|
|||||||
import org.jetbrains.jet.lang.resolve.name.Name
|
import org.jetbrains.jet.lang.resolve.name.Name
|
||||||
import org.jetbrains.jet.descriptors.serialization.Flags
|
import org.jetbrains.jet.descriptors.serialization.Flags
|
||||||
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationAndConstantLoader
|
import org.jetbrains.jet.descriptors.serialization.descriptors.AnnotationAndConstantLoader
|
||||||
|
import org.jetbrains.jet.lang.resolve.java.JvmAnnotationNames
|
||||||
|
|
||||||
public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
|
public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C : Any>(
|
||||||
storageManager: StorageManager,
|
storageManager: StorageManager,
|
||||||
@@ -49,6 +50,15 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
|
|||||||
result: MutableList<A>
|
result: MutableList<A>
|
||||||
): KotlinJvmBinaryClass.AnnotationArgumentVisitor?
|
): KotlinJvmBinaryClass.AnnotationArgumentVisitor?
|
||||||
|
|
||||||
|
private fun loadAnnotationIfNotSpecial(
|
||||||
|
annotationClassId: ClassId,
|
||||||
|
result: MutableList<A>
|
||||||
|
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
||||||
|
if (JvmAnnotationNames.isSpecialAnnotation(annotationClassId, true)) return null
|
||||||
|
|
||||||
|
return loadAnnotation(annotationClassId, result)
|
||||||
|
}
|
||||||
|
|
||||||
override fun loadClassAnnotations(classProto: ProtoBuf.Class, nameResolver: NameResolver): List<A> {
|
override fun loadClassAnnotations(classProto: ProtoBuf.Class, nameResolver: NameResolver): List<A> {
|
||||||
val classId = nameResolver.getClassId(classProto.getFqName())
|
val classId = nameResolver.getClassId(classProto.getFqName())
|
||||||
val kotlinClass = findKotlinClassById(classId)
|
val kotlinClass = findKotlinClassById(classId)
|
||||||
@@ -63,7 +73,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
|
|||||||
|
|
||||||
kotlinClass.loadClassAnnotations(object : KotlinJvmBinaryClass.AnnotationVisitor {
|
kotlinClass.loadClassAnnotations(object : KotlinJvmBinaryClass.AnnotationVisitor {
|
||||||
override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
||||||
return loadAnnotation(classId, result)
|
return loadAnnotationIfNotSpecial(classId, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitEnd() {
|
override fun visitEnd() {
|
||||||
@@ -215,7 +225,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
|
|||||||
result = ArrayList<A>()
|
result = ArrayList<A>()
|
||||||
memberAnnotations[paramSignature] = result
|
memberAnnotations[paramSignature] = result
|
||||||
}
|
}
|
||||||
return loadAnnotation(classId, result)
|
return loadAnnotationIfNotSpecial(classId, result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +233,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
|
|||||||
private val result = ArrayList<A>()
|
private val result = ArrayList<A>()
|
||||||
|
|
||||||
override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
override fun visitAnnotation(classId: ClassId): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
||||||
return loadAnnotation(classId, result)
|
return loadAnnotationIfNotSpecial(classId, result)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun visitEnd() {
|
override fun visitEnd() {
|
||||||
|
|||||||
-3
@@ -16,7 +16,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.lang.resolve.kotlin
|
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.DescriptorResolverUtils
|
||||||
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter
|
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter
|
||||||
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
|
import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass.AnnotationArrayArgumentVisitor
|
||||||
@@ -76,8 +75,6 @@ public class BinaryClassAnnotationAndConstantLoaderImpl(
|
|||||||
annotationClassId: ClassId,
|
annotationClassId: ClassId,
|
||||||
result: MutableList<AnnotationDescriptor>
|
result: MutableList<AnnotationDescriptor>
|
||||||
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
): KotlinJvmBinaryClass.AnnotationArgumentVisitor? {
|
||||||
if (JvmAnnotationNames.isSpecialAnnotation(annotationClassId, true)) return null
|
|
||||||
|
|
||||||
val annotationClass = resolveClass(annotationClassId)
|
val annotationClass = resolveClass(annotationClassId)
|
||||||
|
|
||||||
return object : KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
return object : KotlinJvmBinaryClass.AnnotationArgumentVisitor {
|
||||||
|
|||||||
Reference in New Issue
Block a user