diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt index 77aad79eb90..6f17a291ed5 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertyGetterSymbol.kt @@ -74,7 +74,7 @@ class KtFe10DescDefaultPropertyGetterSymbol( get() = withValidityAssertion { propertyDescriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) } override val modality: Modality - get() = withValidityAssertion { propertyDescriptor.modality } + get() = withValidityAssertion { propertyDescriptor.ktModality } override val visibility: Visibility get() = withValidityAssertion { propertyDescriptor.ktVisibility } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt index 224a9264b58..d0afa926814 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/KtFe10DescDefaultPropertySetterSymbol.kt @@ -71,7 +71,7 @@ class KtFe10DescDefaultPropertySetterSymbol( get() = withValidityAssertion { propertyDescriptor.dispatchReceiverParameter?.type?.toKtType(analysisContext) } override val modality: Modality - get() = withValidityAssertion { propertyDescriptor.modality } + get() = withValidityAssertion { propertyDescriptor.ktModality } override val visibility: Visibility get() = withValidityAssertion { propertyDescriptor.ktVisibility } 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 c5bd7840527..572c9eb6c43 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 @@ -243,6 +243,20 @@ internal val DeclarationDescriptorWithVisibility.ktVisibility: Visibility else -> Visibilities.Unknown } +internal val MemberDescriptor.ktModality: Modality + get() { + val selfModality = this.modality + + if (selfModality == Modality.OPEN) { + val containingDeclaration = this.containingDeclaration + if (containingDeclaration is ClassDescriptor && containingDeclaration.modality == Modality.FINAL) { + return Modality.FINAL + } + } + + return this.modality + } + internal fun ConstantValue<*>.toKtConstantValue(): KtConstantValue { return when (this) { is BooleanValue -> KtLiteralConstantValue(ConstantValueKind.Boolean, value, null) diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/KtFe10DescMemberSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/KtFe10DescMemberSymbol.kt index db528c3a618..caa7889c19b 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/KtFe10DescMemberSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/descriptorBased/base/KtFe10DescMemberSymbol.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.descriptors.Visibility internal interface KtFe10DescMemberSymbol : KtFe10DescSymbol, KtSymbolWithVisibility, KtSymbolWithModality, KtSymbolWithKind { override val modality: Modality - get() = withValidityAssertion { descriptor.modality } + get() = withValidityAssertion { descriptor.ktModality } override val visibility: Visibility get() = withValidityAssertion { descriptor.ktVisibility } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt index d3ac9ec47a2..f8063a7b41c 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertyGetterSymbol.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations @@ -96,7 +97,7 @@ class KtFe10PsiDefaultPropertyGetterSymbol( } override val modality: Modality - get() = withValidityAssertion { propertyPsi.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { propertyPsi.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { propertyPsi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt index ffbab2402cf..34a195ac850 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiDefaultPropertySetterSymbol.kt @@ -9,6 +9,7 @@ import com.intellij.psi.PsiElement import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade import org.jetbrains.kotlin.analysis.api.descriptors.symbols.base.KtFe10Symbol +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations @@ -103,7 +104,7 @@ class KtFe10PsiDefaultPropertySetterSymbol( } override val modality: Modality - get() = withValidityAssertion { propertyPsi.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { propertyPsi.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { propertyPsi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt index 6d0abde1e86..ba9a1dba5bd 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiFunctionSymbol.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations @@ -110,7 +110,7 @@ internal class KtFe10PsiFunctionSymbol( get() = withValidityAssertion { psi.typeParameters.map { KtFe10PsiTypeParameterSymbol(it, analysisContext) } } override val modality: Modality - get() = withValidityAssertion { psi.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { psi.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt index 41078df4c3b..7a90ee5cfdf 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiKotlinPropertySymbol.kt @@ -7,13 +7,16 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.* import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtConstantValue import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.* +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktModality +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktSymbolKind +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.utils.cached import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol import org.jetbrains.kotlin.analysis.api.symbols.KtPropertyGetterSymbol @@ -133,7 +136,7 @@ internal class KtFe10PsiKotlinPropertySymbol( } override val modality: Modality - get() = withValidityAssertion { psi.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { psi.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt index 65e501604ba..4e3f6a207dd 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiNamedClassOrObjectSymbol.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getSupertypesWithAny +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations import org.jetbrains.kotlin.analysis.api.descriptors.symbols.pointers.KtFe10NeverRestoringSymbolPointer @@ -105,7 +106,7 @@ internal class KtFe10PsiNamedClassOrObjectSymbol( get() = withValidityAssertion { psi.typeParameters.map { KtFe10PsiTypeParameterSymbol(it, analysisContext) } } override val modality: Modality - get() = withValidityAssertion { psi.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { psi.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt index 39c69128fcd..153dfa9e5a0 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertyGetterSymbol.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations @@ -40,7 +40,7 @@ internal class KtFe10PsiPropertyGetterSymbol( } override val modality: Modality - get() = withValidityAssertion { psi.property.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { psi.property.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: psi.property.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt index e12665e6ae1..d3d288df0ed 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/symbols/psiBased/KtFe10PsiPropertySetterSymbol.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.analysis.api.descriptors.symbols.psiBased import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisFacade.AnalysisMode -import org.jetbrains.kotlin.analysis.api.descriptors.KtFe10AnalysisSession +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtType import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.toKtTypeAndAnnotations @@ -41,7 +41,7 @@ internal class KtFe10PsiPropertySetterSymbol( } override val modality: Modality - get() = withValidityAssertion { psi.property.ktModality ?: descriptor?.modality ?: Modality.FINAL } + get() = withValidityAssertion { psi.property.ktModality ?: descriptor?.ktModality ?: Modality.FINAL } override val visibility: Visibility get() = withValidityAssertion { psi.ktVisibility ?: descriptor?.ktVisibility ?: psi.property.ktVisibility ?: Visibilities.Public } diff --git a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10Renderer.kt b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10Renderer.kt index b9d21bce315..e195232c4eb 100644 --- a/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10Renderer.kt +++ b/analysis/analysis-api-fe10/src/org/jetbrains/kotlin/analysis/api/descriptors/utils/KtFe10Renderer.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.analysis.api.components.RendererModifier import org.jetbrains.kotlin.analysis.api.descriptors.Fe10AnalysisContext import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.classId import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.isExplicitOverride +import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktModality import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.ktVisibility import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.StandardNames @@ -597,9 +598,11 @@ internal class KtFe10Renderer( return } + val modality = descriptor.ktModality + renderModifier( - descriptor.modality.name.toLowerCaseAsciiOnly(), - descriptor.modality != getDefaultModality(descriptor), + modality.name.toLowerCaseAsciiOnly(), + modality != getDefaultModality(descriptor), RendererModifier.MODALITY ) } @@ -612,10 +615,10 @@ internal class KtFe10Renderer( if (containingDeclaration !is ClassDescriptor) { return Modality.FINAL } - if (descriptor.isExplicitOverride && containingDeclaration.modality != Modality.FINAL) { + if (descriptor.isExplicitOverride && containingDeclaration.ktModality != Modality.FINAL) { return Modality.OPEN } else if (containingDeclaration.kind == ClassKind.INTERFACE && descriptor.visibility != DescriptorVisibilities.PRIVATE) { - return if (descriptor.modality == Modality.ABSTRACT) Modality.ABSTRACT else Modality.OPEN + return if (descriptor.ktModality == Modality.ABSTRACT) Modality.ABSTRACT else Modality.OPEN } return Modality.FINAL