[FIR] FirSyntheticProperty: make constructor internal

Also, backingField can be moved into the body

^KT-61990
This commit is contained in:
Dmitrii Gridin
2023-10-12 20:26:02 +02:00
committed by Space Team
parent 6c1405cf99
commit bb40ce0bfc
4 changed files with 21 additions and 17 deletions
@@ -9,18 +9,18 @@ import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.copy import org.jetbrains.kotlin.fir.copy
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty import org.jetbrains.kotlin.fir.declarations.UnresolvedDeprecationProvider
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor import org.jetbrains.kotlin.fir.declarations.getDeprecationsProviderFromAccessors
import org.jetbrains.kotlin.fir.declarations.synthetic.buildSyntheticProperty
import org.jetbrains.kotlin.fir.java.symbols.FirJavaOverriddenSyntheticPropertySymbol import org.jetbrains.kotlin.fir.java.symbols.FirJavaOverriddenSyntheticPropertySymbol
import org.jetbrains.kotlin.fir.nullableModuleData import org.jetbrains.kotlin.fir.nullableModuleData
import org.jetbrains.kotlin.fir.scopes.FirDelegatingTypeScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.fir.declarations.resolvePhase
import org.jetbrains.kotlin.fir.scopes.FirDelegatingTypeScope
class JavaAnnotationSyntheticPropertiesScope( class JavaAnnotationSyntheticPropertiesScope(
private val session: FirSession, private val session: FirSession,
@@ -43,18 +43,17 @@ class JavaAnnotationSyntheticPropertiesScope(
val symbol = syntheticPropertiesCache.getOrPut(functionSymbol) { val symbol = syntheticPropertiesCache.getOrPut(functionSymbol) {
val callableId = CallableId(classId, name) val callableId = CallableId(classId, name)
FirJavaOverriddenSyntheticPropertySymbol(callableId, callableId).also { FirJavaOverriddenSyntheticPropertySymbol(callableId, callableId).also {
val accessor = FirSyntheticPropertyAccessor(function, isGetter = true, it) buildSyntheticProperty {
FirSyntheticProperty( moduleData = session.nullableModuleData ?: function.moduleData
session.nullableModuleData ?: function.moduleData, this.name = name
name, symbol = it
isVar = false, status = function.status.copy(modality = Modality.FINAL)
it, delegateGetter = function
function.status.copy(modality = Modality.FINAL), deprecationsProvider = UnresolvedDeprecationProvider
function.resolvePhase, }
accessor
)
} }
} }
processor(symbol) processor(symbol)
} }
} }
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.expressions.FirAnnotation import org.jetbrains.kotlin.fir.expressions.FirAnnotation
@@ -20,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
class FirSyntheticProperty( class FirSyntheticProperty @FirImplementationDetail internal constructor(
override val moduleData: FirModuleData, override val moduleData: FirModuleData,
override val name: Name, override val name: Name,
override val isVar: Boolean, override val isVar: Boolean,
@@ -29,7 +30,6 @@ class FirSyntheticProperty(
resolvePhase: FirResolvePhase, resolvePhase: FirResolvePhase,
override val getter: FirSyntheticPropertyAccessor, override val getter: FirSyntheticPropertyAccessor,
override val setter: FirSyntheticPropertyAccessor? = null, override val setter: FirSyntheticPropertyAccessor? = null,
override val backingField: FirBackingField? = null,
override val deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider override val deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
) : FirProperty() { ) : FirProperty() {
init { init {
@@ -41,6 +41,8 @@ class FirSyntheticProperty(
this.resolveState = resolvePhase.asResolveState() this.resolveState = resolvePhase.asResolveState()
} }
override val backingField: FirBackingField? get() = null
override val returnTypeRef: FirTypeRef override val returnTypeRef: FirTypeRef
get() = getter.returnTypeRef get() = getter.returnTypeRef
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.KtSourceElement import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.contracts.FirContractDescription import org.jetbrains.kotlin.fir.contracts.FirContractDescription
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
@@ -22,7 +23,7 @@ import org.jetbrains.kotlin.fir.visitors.FirTransformer
import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.fir.visitors.FirVisitor
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
class FirSyntheticPropertyAccessor( class FirSyntheticPropertyAccessor @FirImplementationDetail internal constructor(
val delegate: FirSimpleFunction, val delegate: FirSimpleFunction,
override val isGetter: Boolean, override val isGetter: Boolean,
override val propertySymbol: FirPropertySymbol, override val propertySymbol: FirPropertySymbol,
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.DeprecationsProvider import org.jetbrains.kotlin.fir.declarations.DeprecationsProvider
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -24,6 +25,7 @@ class FirSyntheticPropertyBuilder {
var delegateSetter: FirSimpleFunction? = null var delegateSetter: FirSimpleFunction? = null
@OptIn(FirImplementationDetail::class)
fun build(): FirSyntheticProperty = FirSyntheticProperty( fun build(): FirSyntheticProperty = FirSyntheticProperty(
moduleData, name, isVar = delegateSetter != null, symbol = symbol, moduleData, name, isVar = delegateSetter != null, symbol = symbol,
status = status ?: delegateGetter.status, status = status ?: delegateGetter.status,