diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt index b2b6666a1bd..6e0045b2922 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/AbstractBinaryClassAnnotationAndConstantLoader.kt @@ -84,28 +84,26 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader { - return when (proto) { - is ProtoBuf.Constructor, is ProtoBuf.Function -> { - val signature = getCallableSignature(proto, container.nameResolver, kind) ?: return emptyList() - transformAnnotations(findClassAndLoadMemberAnnotations(container, proto, signature)) - } - is ProtoBuf.Property -> { - val nameResolver = container.nameResolver - val syntheticFunctionSignature = getPropertySignature(proto, nameResolver, synthetic = true) - val fieldSignature = getPropertySignature(proto, nameResolver, field = true) + if (kind == AnnotatedCallableKind.PROPERTY) { + proto as ProtoBuf.Property - val propertyAnnotations = syntheticFunctionSignature?.let { sig -> - findClassAndLoadMemberAnnotations(container, proto, sig) - } ?: listOf() + val nameResolver = container.nameResolver + val syntheticFunctionSignature = getPropertySignature(proto, nameResolver, synthetic = true) + val fieldSignature = getPropertySignature(proto, nameResolver, field = true) - val fieldAnnotations = fieldSignature?.let { sig -> - findClassAndLoadMemberAnnotations(container, proto, sig, isStaticFieldInOuter(proto)) - } ?: listOf() + val propertyAnnotations = syntheticFunctionSignature?.let { sig -> + findClassAndLoadMemberAnnotations(container, proto, sig) + }.orEmpty() - loadPropertyAnnotations(propertyAnnotations, fieldAnnotations) - } - else -> emptyList() + val fieldAnnotations = fieldSignature?.let { sig -> + findClassAndLoadMemberAnnotations(container, proto, sig, isStaticFieldInOuter(proto)) + }.orEmpty() + + return loadPropertyAnnotations(propertyAnnotations, fieldAnnotations) } + + val signature = getCallableSignature(proto, container.nameResolver, kind) ?: return emptyList() + return transformAnnotations(findClassAndLoadMemberAnnotations(container, proto, signature)) } protected abstract fun loadPropertyAnnotations(propertyAnnotations: List, fieldAnnotations: List): List @@ -299,6 +297,9 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader { + MemberSignature.fromMethod(nameResolver, proto.getExtension(constructorSignature)) + } proto is ProtoBuf.Function && proto.hasExtension(methodSignature) -> { MemberSignature.fromMethod(nameResolver, proto.getExtension(methodSignature)) }