[FIR IDE] Don't return 'open' modality for final class members in AAPI/FE10
This commit partially fixes KtFe10SymbolByPsiTestGenerated.testEnumValueMember().
This commit is contained in:
+1
-1
@@ -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 }
|
||||
|
||||
+1
-1
@@ -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 }
|
||||
|
||||
+14
@@ -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)
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
||||
internal interface KtFe10DescMemberSymbol<T : MemberDescriptor> :
|
||||
KtFe10DescSymbol<T>, KtSymbolWithVisibility, KtSymbolWithModality, KtSymbolWithKind {
|
||||
override val modality: Modality
|
||||
get() = withValidityAssertion { descriptor.modality }
|
||||
get() = withValidityAssertion { descriptor.ktModality }
|
||||
|
||||
override val visibility: Visibility
|
||||
get() = withValidityAssertion { descriptor.ktVisibility }
|
||||
|
||||
+2
-1
@@ -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 }
|
||||
|
||||
+2
-1
@@ -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 }
|
||||
|
||||
+2
-2
@@ -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 }
|
||||
|
||||
+5
-2
@@ -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 }
|
||||
|
||||
+2
-1
@@ -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 }
|
||||
|
||||
+2
-2
@@ -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 }
|
||||
|
||||
+2
-2
@@ -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 }
|
||||
|
||||
+7
-4
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user