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.expressions.*
import org.jetbrains.kotlin.fir.references.* import org.jetbrains.kotlin.fir.references.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession 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.diagnostics.ConeUnmatchedTypeArgumentsError
import org.jetbrains.kotlin.fir.resolve.toSymbol import org.jetbrains.kotlin.fir.resolve.toSymbol
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer 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.buildSymbol
import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirPackageSymbol import org.jetbrains.kotlin.analysis.api.fir.symbols.KtFirPackageSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol 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.lexer.KtTokens
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
@@ -89,9 +89,9 @@ internal object FirReferenceResolveHelper {
} }
is FirResolvedNamedReference -> { is FirResolvedNamedReference -> {
val fir = when (val symbol = resolvedSymbol) { val fir = when (val symbol = resolvedSymbol) {
is FirSyntheticPropertySymbol -> { is FirAccessorSymbol -> {
val syntheticProperty = symbol.fir as FirSyntheticProperty 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 syntheticProperty.getter.delegate
} else { } else {
syntheticProperty.setter!!.delegate syntheticProperty.setter!!.delegate
@@ -154,7 +154,7 @@ class FirSignatureEnhancement(
return buildSyntheticProperty { return buildSyntheticProperty {
moduleData = this@FirSignatureEnhancement.moduleData moduleData = this@FirSignatureEnhancement.moduleData
this.name = name this.name = name
symbol = FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.accessorId) symbol = FirAccessorSymbol(accessorSymbol.callableId, accessorSymbol.getterId)
delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction delegateGetter = enhancedGetterSymbol.fir as FirSimpleFunction
delegateSetter = enhancedSetterSymbol?.fir as FirSimpleFunction? delegateSetter = enhancedSetterSymbol?.fir as FirSimpleFunction?
status = firElement.status status = firElement.status
@@ -75,8 +75,8 @@ class JavaClassUseSiteMemberScope(
moduleData = session.moduleData moduleData = session.moduleData
name = property.name name = property.name
symbol = FirAccessorSymbol( symbol = FirAccessorSymbol(
accessorId = getterSymbol.callableId, getterId = getterSymbol.callableId,
callableId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, property.name) propertyId = CallableId(getterSymbol.callableId.packageName, getterSymbol.callableId.className, property.name)
) )
delegateGetter = getterSymbol.fir delegateGetter = getterSymbol.fir
delegateSetter = setterSymbol?.fir delegateSetter = setterSymbol?.fir
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.name.StandardClassIds
import org.jetbrains.kotlin.types.AbstractTypeChecker import org.jetbrains.kotlin.types.AbstractTypeChecker
class FirSyntheticPropertySymbol( class FirSyntheticPropertySymbol(
callableId: CallableId, propertyId: CallableId,
override val accessorId: CallableId getterId: CallableId
) : FirAccessorSymbol(callableId, accessorId), SyntheticSymbol ) : FirAccessorSymbol(propertyId, getterId), SyntheticSymbol
class FirSyntheticFunctionSymbol( class FirSyntheticFunctionSymbol(
callableId: CallableId callableId: CallableId
@@ -114,8 +114,8 @@ class FirSyntheticPropertiesScope(
moduleData = session.moduleData moduleData = session.moduleData
name = propertyName name = propertyName
symbol = FirSyntheticPropertySymbol( symbol = FirSyntheticPropertySymbol(
accessorId = getterSymbol.callableId, getterId = getterSymbol.callableId,
callableId = CallableId(packageName, className, propertyName) propertyId = CallableId(packageName, className, propertyName)
) )
delegateGetter = getter delegateGetter = getter
delegateSetter = matchingSetter delegateSetter = matchingSetter
@@ -435,7 +435,7 @@ object FirFakeOverrideGenerator {
newSetterParameterTypes: List<ConeKotlinType?>?, newSetterParameterTypes: List<ConeKotlinType?>?,
fakeOverrideSubstitution: FakeOverrideSubstitution? fakeOverrideSubstitution: FakeOverrideSubstitution?
): FirAccessorSymbol { ): FirAccessorSymbol {
val getterSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId) val getterSymbol = FirNamedFunctionSymbol(baseSymbol.getterId)
val getter = createSubstitutionOverrideFunction( val getter = createSubstitutionOverrideFunction(
getterSymbol, getterSymbol,
session, session,
@@ -447,7 +447,7 @@ object FirFakeOverrideGenerator {
newTypeParameters = null, newTypeParameters = null,
fakeOverrideSubstitution = fakeOverrideSubstitution fakeOverrideSubstitution = fakeOverrideSubstitution
) )
val setterSymbol = FirNamedFunctionSymbol(baseSymbol.accessorId) val setterSymbol = FirNamedFunctionSymbol(baseSymbol.getterId)
val baseSetter = baseProperty.setter val baseSetter = baseProperty.setter
val setter = if (baseSetter == null) null else createSubstitutionOverrideFunction( val setter = if (baseSetter == null) null else createSubstitutionOverrideFunction(
setterSymbol, setterSymbol,
@@ -463,7 +463,7 @@ object FirFakeOverrideGenerator {
return buildSyntheticProperty { return buildSyntheticProperty {
moduleData = session.moduleData moduleData = session.moduleData
name = baseProperty.name name = baseProperty.name
symbol = FirAccessorSymbol(baseSymbol.callableId, baseSymbol.accessorId) symbol = FirAccessorSymbol(baseSymbol.callableId, baseSymbol.getterId)
delegateGetter = getter delegateGetter = getter
delegateSetter = setter delegateSetter = setter
status = baseProperty.status status = baseProperty.status
@@ -81,9 +81,9 @@ class FirConstructorSymbol(
} }
open class FirAccessorSymbol( open class FirAccessorSymbol(
callableId: CallableId, propertyId: CallableId,
open val accessorId: CallableId val getterId: CallableId
) : FirPropertySymbol(callableId) ) : FirPropertySymbol(propertyId)
// ------------------------ unnamed ------------------------ // ------------------------ unnamed ------------------------