From ef5cfab6553a172ff68552557a6c8d44aa6cee4f Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 27 May 2022 10:05:20 +0200 Subject: [PATCH] FE10 analysis API: don't count static members of final class as final --- .../symbols/descriptorBased/base/Kt1DescUtils.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt index 4d9ef1a653b..c690a1a6b23 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/Kt1DescUtils.kt @@ -26,10 +26,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor import org.jetbrains.kotlin.descriptors.impl.* import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor -import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor -import org.jetbrains.kotlin.load.java.descriptors.JavaForKotlinOverridePropertyDescriptor -import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor +import org.jetbrains.kotlin.load.java.descriptors.* import org.jetbrains.kotlin.load.java.sources.JavaSourceElement import org.jetbrains.kotlin.load.kotlin.toSourceElement import org.jetbrains.kotlin.name.CallableId @@ -352,7 +349,10 @@ internal val MemberDescriptor.ktModality: Modality if (selfModality == Modality.OPEN) { val containingDeclaration = this.containingDeclaration if (containingDeclaration is ClassDescriptor && containingDeclaration.modality == Modality.FINAL) { - return Modality.FINAL + if (this !is CallableMemberDescriptor || dispatchReceiverParameter != null) { + // Non-static open callables in final class are counted as final (to match FIR) + return Modality.FINAL + } } }