From 5f986fd467c96a10382b9ddbb9b419acd4f4fdeb Mon Sep 17 00:00:00 2001 From: Jinseong Jeon Date: Thu, 1 Dec 2022 22:33:32 -0800 Subject: [PATCH] ULC: fix PsiMethod#getThrowsList for accessors ^KTIJ-17761 --- .../kotlin/asJava/classes/ultraLightMethods.kt | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt index bc219813214..ff7ea79038f 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethods.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.codegen.FunctionCodegen import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.descriptors.ConstructorDescriptor import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor import org.jetbrains.kotlin.load.java.BuiltinMethodsWithSpecialGenericSignature.getSpecialSignatureInfo import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor import org.jetbrains.kotlin.load.kotlin.TypeMappingMode @@ -85,7 +86,7 @@ internal abstract class KtUltraLightMethod( lightMemberOrigin: LightMemberOriginForDeclaration?, protected val support: KtUltraLightSupport, containingClass: KtLightClass, - private val methodIndex: Int + protected val methodIndex: Int ) : KtLightMethodImpl( lightMemberOrigin, containingClass @@ -234,7 +235,20 @@ internal class KtUltraLightMethodForSourceDeclaration( else LightTypeParameterListBuilder(manager, language) } - private val methodDescriptor get() = kotlinOrigin?.resolve() as? FunctionDescriptor + private val methodDescriptor: FunctionDescriptor? + get() { + return when (val descriptor = kotlinOrigin?.resolve()) { + is FunctionDescriptor -> descriptor + is PropertyDescriptor -> { + when (methodIndex) { + METHOD_INDEX_FOR_GETTER -> descriptor.getter + METHOD_INDEX_FOR_SETTER -> descriptor.setter + else -> null + } + } + else -> null + } + } private val _throwsList: PsiReferenceList by lazyPub { computeThrowsList(methodDescriptor) } override fun getThrowsList(): PsiReferenceList = _throwsList