FIR: refactor/use properly FirAccessorSymbol & FirSyntheticPropertySymbol

This commit is contained in:
Mikhail Glukhikh
2021-10-21 16:00:25 +03:00
committed by TeamCityServer
parent 41849c8beb
commit c673c4cc91
6 changed files with 17 additions and 17 deletions
@@ -17,7 +17,6 @@ import org.jetbrains.kotlin.fir.declarations.utils.isStatic
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.references.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.resolve.calls.FirSyntheticPropertySymbol
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnmatchedTypeArgumentsError
import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
@@ -34,6 +33,7 @@ import org.jetbrains.kotlin.analysis.api.fir.KtSymbolByFirBuilder
import org.jetbrains.kotlin.analysis.api.fir.buildSymbol
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirPackageSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
@@ -89,9 +89,9 @@ internal object FirReferenceResolveHelper {
}
is FirResolvedNamedReference -> {
val fir = when (val symbol = resolvedSymbol) {
is FirSyntheticPropertySymbol -> {
is FirAccessorSymbol -> {
val syntheticProperty = symbol.fir as FirSyntheticProperty
if (syntheticProperty.getter.delegate.symbol.callableId == symbol.accessorId) {
if (syntheticProperty.getter.delegate.symbol.callableId == symbol.getterId) {
syntheticProperty.getter.delegate
} else {
syntheticProperty.setter!!.delegate
@@ -154,7 +154,7 @@ class FirSignatureEnhancement(
return buildSyntheticProperty {
moduleData = this@FirSignatureEnhancement.moduleData
this.name = name
symbol = FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.accessorId)
symbol = FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.getterId)
delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction
delegateSetter = enhancedSetterSymbol?.fir as FirSimpleFunction?
status = firElement.status
@@ -75,8 +75,8 @@ class JavaClassUseSiteMemberScope(
moduleData = session.moduleData
name = property.name
symbol = FirAccessorSymbol(
accessorId = getterSymbol.callableId,
callableId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, property.name)
getterId = getterSymbol.callableId,
propertyId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, property.name)
)
delegateGetter = getterSymbol.fir
delegateSetter = setterSymbol?.fir
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.AbstractTypeChecker
class FirSyntheticPropertySymbol(
callableId: CallableId,
override val accessorId: CallableId
) : FirAccessorSymbol(callableId, accessorId), SyntheticSymbol
propertyId: CallableId,
getterId: CallableId
) : FirAccessorSymbol(propertyId, getterId), SyntheticSymbol
class FirSyntheticFunctionSymbol(
callableId: CallableId
@@ -114,8 +114,8 @@ class FirSyntheticPropertiesScope(
moduleData = session.moduleData
name = propertyName
symbol = FirSyntheticPropertySymbol(
accessorId = getterSymbol.callableId,
callableId = CallableId(packageName, className, propertyName)
getterId = getterSymbol.callableId,
propertyId = CallableId(packageName, className, propertyName)
)
delegateGetter = getter
delegateSetter = matchingSetter
@@ -435,7 +435,7 @@ object FirFakeOverrideGenerator {
newSetterParameterTypes: List<ConeKotlinType?>?,
fakeOverrideSubstitution: FakeOverrideSubstitution?
): FirAccessorSymbol {
val getterSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId)
val getterSymbol = FirNamedFunctionSymbol(baseSymbol.getterId)
val getter = createSubstitutionOverrideFunction(
getterSymbol,
session,
@@ -447,7 +447,7 @@ object FirFakeOverrideGenerator {
newTypeParameters = null,
fakeOverrideSubstitution = fakeOverrideSubstitution
)
val setterSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId)
val setterSymbol = FirNamedFunctionSymbol(baseSymbol.getterId)
val baseSetter = baseProperty.setter
val setter = if (baseSetter == null) null else createSubstitutionOverrideFunction(
setterSymbol,
@@ -463,7 +463,7 @@ object FirFakeOverrideGenerator {
return buildSyntheticProperty {
moduleData = session.moduleData
name = baseProperty.name
symbol = FirAccessorSymbol(baseSymbol.callableId, baseSymbol.accessorId)
symbol = FirAccessorSymbol(baseSymbol.callableId, baseSymbol.getterId)
delegateGetter = getter
delegateSetter = setter
status = baseProperty.status
@@ -81,9 +81,9 @@ class FirConstructorSymbol(
}
open class FirAccessorSymbol(
callableId: CallableId,
open val accessorId: CallableId
) : FirPropertySymbol(callableId)
propertyId: CallableId,
val getterId: CallableId
) : FirPropertySymbol(propertyId)
// ------------------------ unnamed ------------------------