Fix invalid repeatable annotations loading in sutb builder
This commit is contained in:
+12
-4
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.SpecialJvmAnnotations
|
||||
import org.jetbrains.kotlin.analysis.decompiler.stub.*
|
||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||
import org.jetbrains.kotlin.deserialization.common.jvm.impl.VirtualFileKotlinClass
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.kotlin.load.kotlin.*
|
||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
@@ -158,10 +159,9 @@ private class AnnotationLoaderForClassFileStubBuilder(
|
||||
}
|
||||
|
||||
override fun visitEnd() {
|
||||
// todo
|
||||
// if (!isRepeatableWithImplicitContainer(annotationClassId, arguments)) {
|
||||
// result.add(annotationClassId)
|
||||
// }
|
||||
if (!isRepeatableWithImplicitContainer(annotationClassId, arguments)) {
|
||||
result.add(annotationClassId)
|
||||
}
|
||||
}
|
||||
|
||||
override fun visit(name: Name?, value: Any?) = Unit
|
||||
@@ -171,6 +171,14 @@ private class AnnotationLoaderForClassFileStubBuilder(
|
||||
}
|
||||
}
|
||||
|
||||
protected fun isRepeatableWithImplicitContainer(annotationClassId: ClassId, arguments: Map<Name, ConstantValue<*>>): Boolean {
|
||||
if (annotationClassId != SpecialJvmAnnotations.JAVA_LANG_ANNOTATION_REPEATABLE) return false
|
||||
|
||||
val containerKClassValue = arguments[JvmAnnotationNames.DEFAULT_ANNOTATION_MEMBER_NAME] as? KClassValue ?: return false
|
||||
val normalClass = containerKClassValue.value as? KClassValue.Value.NormalClass ?: return false
|
||||
return isImplicitRepeatableContainer(normalClass.classId)
|
||||
}
|
||||
|
||||
private fun loadAnnotationsAndInitializers(kotlinClass: KotlinJvmBinaryClass): AnnotationsClassIdContainer {
|
||||
val memberAnnotations = HashMap<MemberSignature, MutableList<ClassId>>()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user