[FIR] Build resolved declaration status for all non-raw declarations
This commit is contained in:
committed by
TeamCityServer
parent
d54808e33f
commit
12331cb10c
@@ -8,22 +8,24 @@ package org.jetbrains.kotlin.fir
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
|
||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.FirRegularClassBuilder
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildSimpleFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildEmptyExpressionBlock
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||
import org.jetbrains.kotlin.fir.types.impl.ConeClassLikeTypeImpl
|
||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef
|
||||
import org.jetbrains.kotlin.name.CallableId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.StandardClassIds
|
||||
|
||||
private val ENUM_VALUES = Name.identifier("values")
|
||||
private val ENUM_VALUE_OF = Name.identifier("valueOf")
|
||||
@@ -48,7 +50,7 @@ fun FirRegularClassBuilder.generateValuesFunction(
|
||||
)
|
||||
}
|
||||
name = ENUM_VALUES
|
||||
this.status = FirDeclarationStatusImpl(Visibilities.Public, Modality.FINAL).apply {
|
||||
this.status = createStatus(this@generateValuesFunction.status).apply {
|
||||
isStatic = true
|
||||
isExpect = makeExpect
|
||||
}
|
||||
@@ -77,7 +79,8 @@ fun FirRegularClassBuilder.generateValueOfFunction(
|
||||
)
|
||||
}
|
||||
name = ENUM_VALUE_OF
|
||||
status = FirDeclarationStatusImpl(Visibilities.Public, Modality.FINAL).apply {
|
||||
|
||||
status = createStatus(this@generateValueOfFunction.status).apply {
|
||||
isStatic = true
|
||||
isExpect = makeExpect
|
||||
}
|
||||
@@ -99,3 +102,12 @@ fun FirRegularClassBuilder.generateValueOfFunction(
|
||||
containingClassAttr = this@generateValueOfFunction.symbol.toLookupTag()
|
||||
}
|
||||
}
|
||||
|
||||
private fun createStatus(parentStatus: FirDeclarationStatus): FirDeclarationStatusImpl {
|
||||
val parentEffectiveVisibility = (parentStatus as? FirResolvedDeclarationStatusImpl)?.effectiveVisibility
|
||||
return if (parentEffectiveVisibility != null) {
|
||||
FirResolvedDeclarationStatusImpl(Visibilities.Public, Modality.FINAL, parentEffectiveVisibility)
|
||||
} else {
|
||||
FirDeclarationStatusImpl(Visibilities.Public, Modality.FINAL)
|
||||
}
|
||||
}
|
||||
|
||||
+10
-1
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.declarations.impl
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.EffectiveVisibility
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.descriptors.Visibility
|
||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||
@@ -34,6 +35,7 @@ abstract class FirDefaultPropertyAccessor(
|
||||
valueParameters: MutableList<FirValueParameter>,
|
||||
isGetter: Boolean,
|
||||
visibility: Visibility,
|
||||
effectiveVisibility: EffectiveVisibility? = null,
|
||||
symbol: FirPropertyAccessorSymbol
|
||||
) : FirPropertyAccessorImpl(
|
||||
source,
|
||||
@@ -44,7 +46,10 @@ abstract class FirDefaultPropertyAccessor(
|
||||
propertyTypeRef,
|
||||
valueParameters,
|
||||
body = null,
|
||||
FirDeclarationStatusImpl(visibility, Modality.FINAL),
|
||||
status = if (effectiveVisibility == null)
|
||||
FirDeclarationStatusImpl(visibility, Modality.FINAL)
|
||||
else
|
||||
FirResolvedDeclarationStatusImpl(visibility, Modality.FINAL, effectiveVisibility),
|
||||
containerSource = null,
|
||||
dispatchReceiverType = null,
|
||||
contractDescription = FirEmptyContractDescription,
|
||||
@@ -85,6 +90,7 @@ class FirDefaultPropertyGetter(
|
||||
origin: FirDeclarationOrigin,
|
||||
propertyTypeRef: FirTypeRef,
|
||||
visibility: Visibility,
|
||||
effectiveVisibility: EffectiveVisibility? = null,
|
||||
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
||||
) : FirDefaultPropertyAccessor(
|
||||
source,
|
||||
@@ -94,6 +100,7 @@ class FirDefaultPropertyGetter(
|
||||
valueParameters = mutableListOf(),
|
||||
isGetter = true,
|
||||
visibility = visibility,
|
||||
effectiveVisibility = effectiveVisibility,
|
||||
symbol = symbol
|
||||
)
|
||||
|
||||
@@ -103,6 +110,7 @@ class FirDefaultPropertySetter(
|
||||
origin: FirDeclarationOrigin,
|
||||
propertyTypeRef: FirTypeRef,
|
||||
visibility: Visibility,
|
||||
effectiveVisibility: EffectiveVisibility? = null,
|
||||
symbol: FirPropertyAccessorSymbol = FirPropertyAccessorSymbol()
|
||||
) : FirDefaultPropertyAccessor(
|
||||
source,
|
||||
@@ -120,5 +128,6 @@ class FirDefaultPropertySetter(
|
||||
),
|
||||
isGetter = false,
|
||||
visibility,
|
||||
effectiveVisibility,
|
||||
symbol
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user