@@ -27,7 +27,12 @@ fun ClassVisibility.findMember(signature: JvmMemberSignature): MemberVisibility?
2727 members[signature] ? : partVisibilities.mapNotNull { it.members[signature] }.firstOrNull()
2828
2929
30- data class MemberVisibility (val member : JvmMemberSignature , val visibility : Flags ? , val isReified : Boolean )
30+ data class MemberVisibility (
31+ val member : JvmMemberSignature ,
32+ val visibility : Flags ? ,
33+ val isReified : Boolean ,
34+ val annotationHolders : PropertyAnnotationHolders
35+ )
3136
3237private fun isPublic (visibility : Flags ? , isPublishedApi : Boolean ) =
3338 visibility == null
@@ -76,14 +81,28 @@ fun KotlinClassMetadata?.isFileOrMultipartFacade() =
7681
7782fun KotlinClassMetadata?.isSyntheticClass () = this is KotlinClassMetadata .SyntheticClass
7883
84+ class PropertyAnnotationHolders (
85+ val field : JvmMemberSignature ? ,
86+ val method : JvmMethodSignature ? ,
87+ ) {
88+ companion object {
89+ val None = PropertyAnnotationHolders (null , null )
90+ }
91+ }
92+
7993fun KotlinClassMetadata.toClassVisibility (classNode : ClassNode ): ClassVisibility {
8094 var flags: Flags ? = null
8195 var _facadeClassName : String? = null
8296 val members = mutableListOf<MemberVisibility >()
8397
84- fun addMember (signature : JvmMemberSignature ? , flags : Flags , isReified : Boolean ) {
98+ fun addMember (
99+ signature : JvmMemberSignature ? ,
100+ flags : Flags ,
101+ isReified : Boolean ,
102+ annotationHolders : PropertyAnnotationHolders
103+ ) {
85104 if (signature != null ) {
86- members.add(MemberVisibility (signature, flags, isReified))
105+ members.add(MemberVisibility (signature, flags, isReified, annotationHolders ))
87106 }
88107 }
89108
@@ -93,7 +112,7 @@ fun KotlinClassMetadata.toClassVisibility(classNode: ClassNode): ClassVisibility
93112 flags = klass.flags
94113
95114 for (constructor in klass.constructors) {
96- addMember(constructor .signature, constructor .flags, isReified = false )
115+ addMember(constructor .signature, constructor .flags, isReified = false , annotationHolders = PropertyAnnotationHolders . None )
97116 }
98117 }
99118 is KotlinClassMetadata .FileFacade ->
@@ -107,20 +126,22 @@ fun KotlinClassMetadata.toClassVisibility(classNode: ClassNode): ClassVisibility
107126 fun List<KmTypeParameter>.containsReified () = any { Flag .TypeParameter .IS_REIFIED (it.flags) }
108127
109128 for (function in container.functions) {
110- addMember(function.signature, function.flags, function.typeParameters.containsReified())
129+ addMember(function.signature, function.flags, function.typeParameters.containsReified(), PropertyAnnotationHolders . None )
111130 }
112131
113132 for (property in container.properties) {
114133 val isReified = property.typeParameters.containsReified()
115- addMember(property.getterSignature, property.getterFlags, isReified)
116- addMember(property.setterSignature, property.setterFlags, isReified)
134+ val annotationDelegates = PropertyAnnotationHolders (property.fieldSignature, property.syntheticMethodForAnnotations)
135+
136+ addMember(property.getterSignature, property.getterFlags, isReified, annotationDelegates)
137+ addMember(property.setterSignature, property.setterFlags, isReified, annotationDelegates)
117138
118139 val fieldVisibility = when {
119140 Flag .Property .IS_LATEINIT (property.flags) -> property.setterFlags
120141 property.getterSignature == null && property.setterSignature == null -> property.flags // JvmField or const case
121142 else -> flagsOf(Flag .IS_PRIVATE )
122143 }
123- addMember(property.fieldSignature, fieldVisibility, isReified = false )
144+ addMember(property.fieldSignature, fieldVisibility, isReified = false , annotationHolders = PropertyAnnotationHolders . None )
124145 }
125146 }
126147
0 commit comments