FIR: refactor/use properly FirAccessorSymbol & FirSyntheticPropertySymbol
This commit is contained in:
committed by
TeamCityServer
parent
41849c8beb
commit
c673c4cc91
+3
-3
@@ -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
|
||||||
|
|||||||
+1
-1
@@ -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
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|||||||
+3
-3
@@ -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 ------------------------
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user