[FIR] Make FirDeclaration an abstract class
This commit is contained in:
+1
-1
@@ -184,7 +184,7 @@ private object FirToKtConversionCreator {
|
||||
KtClassLikeSymbol::class.createType(),
|
||||
importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirRegularClass")
|
||||
),
|
||||
FirMemberDeclaration::class to HLFunctionCallConversion(
|
||||
FirStatusOwner::class to HLFunctionCallConversion(
|
||||
"firSymbolBuilder.buildSymbol({0} as FirDeclaration<*>)",
|
||||
KtSymbol::class.createType(),
|
||||
importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirDeclaration")
|
||||
|
||||
@@ -196,7 +196,7 @@ internal val KtType.nullabilityType: NullabilityType
|
||||
} ?: NullabilityType.Unknown
|
||||
|
||||
|
||||
internal fun FirMemberDeclaration<*>.computeSimpleModality(): Set<String> {
|
||||
internal fun FirStatusOwner.computeSimpleModality(): Set<String> {
|
||||
require(this !is FirConstructor)
|
||||
|
||||
val modifier = when (modality) {
|
||||
|
||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.idea.frontend.api.fir.components
|
||||
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||
import org.jetbrains.kotlin.fir.declarations.FirStatusOwner
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.resolve.calls.ExpressionReceiverValue
|
||||
import org.jetbrains.kotlin.fir.visibilityChecker
|
||||
@@ -55,8 +55,8 @@ internal class KtFirVisibilityChecker(
|
||||
?.let { ExpressionReceiverValue(it) }
|
||||
|
||||
candidateSymbol.firRef.withFir { candidateFirSymbol ->
|
||||
require(candidateFirSymbol is FirMemberDeclaration) {
|
||||
"$candidateFirSymbol must be a FirMemberDeclaration and FirSymbolOwner; it were ${candidateFirSymbol::class} instead"
|
||||
require(candidateFirSymbol is FirStatusOwner) {
|
||||
"$candidateFirSymbol must be a FirStatusOwner and FirSymbolOwner; it were ${candidateFirSymbol::class} instead"
|
||||
}
|
||||
|
||||
rootModuleSession.visibilityChecker.isVisible(
|
||||
|
||||
+4
-4
@@ -109,7 +109,7 @@ internal class FirIdeRenderer private constructor(
|
||||
renderModifier(RendererModifier.MODALITY in options.modifiers, modality.name.toLowerCaseAsciiOnly())
|
||||
}
|
||||
|
||||
private fun FirMemberDeclaration<*>.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration<*>?): Modality {
|
||||
private fun FirStatusOwner.implicitModalityWithoutExtensions(containingDeclaration: FirDeclaration<*>?): Modality {
|
||||
if (this is FirRegularClass) {
|
||||
return if (classKind == ClassKind.INTERFACE) Modality.ABSTRACT else Modality.FINAL
|
||||
}
|
||||
@@ -148,13 +148,13 @@ internal class FirIdeRenderer private constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderMemberModifiers(declaration: FirMemberDeclaration<*>) {
|
||||
private fun StringBuilder.renderMemberModifiers(declaration: FirStatusOwner) {
|
||||
renderModifier(declaration.isExternal, "external")
|
||||
renderModifier(RendererModifier.EXPECT in options.modifiers && declaration.isExpect, "expect")
|
||||
renderModifier(RendererModifier.ACTUAL in options.modifiers && declaration.isActual, "actual")
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderAdditionalModifiers(firMember: FirMemberDeclaration<*>) {
|
||||
private fun StringBuilder.renderAdditionalModifiers(firMember: FirStatusOwner) {
|
||||
val isOperator =
|
||||
firMember.isOperator//TODO make similar to functionDescriptor.overriddenDescriptors.none { it.isOperator }
|
||||
val isInfix =
|
||||
@@ -167,7 +167,7 @@ internal class FirIdeRenderer private constructor(
|
||||
renderModifier(RendererModifier.OPERATOR in options.modifiers && isOperator, "operator")
|
||||
}
|
||||
|
||||
private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirMemberDeclaration<*>) {
|
||||
private fun StringBuilder.renderSuspendModifier(functionDescriptor: FirStatusOwner) {
|
||||
renderModifier(functionDescriptor.isSuspend, "suspend")
|
||||
}
|
||||
|
||||
|
||||
+7
-5
@@ -15,16 +15,16 @@ import org.jetbrains.kotlin.idea.fir.low.level.api.util.getElementTextInContext
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||
|
||||
internal fun KtFirSymbol<FirMemberDeclaration<*>>.getModality(
|
||||
internal fun <F> KtFirSymbol<F>.getModality(
|
||||
phase: FirResolvePhase = FirResolvePhase.STATUS,
|
||||
defaultModality: Modality? = null
|
||||
) =
|
||||
firRef.withFir(phase) { fir ->
|
||||
): Modality where F : FirDeclaration<*>, F : FirStatusOwner {
|
||||
return firRef.withFir(phase) { fir ->
|
||||
fir.modality
|
||||
?: defaultModality
|
||||
?: fir.invalidModalityError()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun FirDeclaration<*>.invalidModalityError(): Nothing {
|
||||
error(
|
||||
@@ -37,7 +37,9 @@ private fun FirDeclaration<*>.invalidModalityError(): Nothing {
|
||||
}
|
||||
|
||||
|
||||
internal fun <F : FirMemberDeclaration<F>> KtFirSymbol<F>.getVisibility(phase: FirResolvePhase = FirResolvePhase.STATUS): Visibility =
|
||||
internal fun <F> KtFirSymbol<F>.getVisibility(
|
||||
phase: FirResolvePhase = FirResolvePhase.STATUS
|
||||
): Visibility where F : FirStatusOwner, F : FirDeclaration<*> =
|
||||
firRef.withFir(phase) { fir -> fir.visibility }
|
||||
|
||||
internal fun KtFirSymbol<FirCallableDeclaration<*>>.getCallableIdIfNonLocal(): CallableId? =
|
||||
|
||||
Reference in New Issue
Block a user