[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.copy
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticProperty
import org.jetbrains.kotlin.fir.declarations.synthetic.FirSyntheticPropertyAccessor
import org.jetbrains.kotlin.fir.declarations.UnresolvedDeprecationProvider
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.nullableModuleData
import org.jetbrains.kotlin.fir.scopes.FirDelegatingTypeScope
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.name.CallableId
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.fir.declarations.resolvePhase
import org.jetbrains.kotlin.fir.scopes.FirDelegatingTypeScope
class JavaAnnotationSyntheticPropertiesScope(
private val session: FirSession,
@@ -43,18 +43,17 @@ class JavaAnnotationSyntheticPropertiesScope(
val symbol = syntheticPropertiesCache.getOrPut(functionSymbol) {
val callableId = CallableId(classId, name)
FirJavaOverriddenSyntheticPropertySymbol(callableId, callableId).also {
val accessor = FirSyntheticPropertyAccessor(function, isGetter = true, it)
FirSyntheticProperty(
session.nullableModuleData ?: function.moduleData,
name,
isVar = false,
it,
function.status.copy(modality = Modality.FINAL),
function.resolvePhase,
accessor
)
buildSyntheticProperty {
moduleData = session.nullableModuleData ?: function.moduleData
this.name = name
symbol = it
status = function.status.copy(modality = Modality.FINAL)
delegateGetter = function
deprecationsProvider = UnresolvedDeprecationProvider
}
}
}
processor(symbol)
}
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.*
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.serialization.deserialization.descriptors.DeserializedContainerSource
class FirSyntheticProperty(
class FirSyntheticProperty @FirImplementationDetail internal constructor(
override val moduleData: FirModuleData,
override val name: Name,
override val isVar: Boolean,
@@ -29,7 +30,6 @@ class FirSyntheticProperty(
resolvePhase: FirResolvePhase,
override val getter: FirSyntheticPropertyAccessor,
override val setter: FirSyntheticPropertyAccessor? = null,
override val backingField: FirBackingField? = null,
override val deprecationsProvider: DeprecationsProvider = UnresolvedDeprecationProvider
) : FirProperty() {
init {
@@ -41,6 +41,8 @@ class FirSyntheticProperty(
this.resolveState = resolvePhase.asResolveState()
}
override val backingField: FirBackingField? get() = null
override val returnTypeRef: FirTypeRef
get() = getter.returnTypeRef
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.KtSourceElement
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
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.serialization.deserialization.descriptors.DeserializedContainerSource
class FirSyntheticPropertyAccessor(
class FirSyntheticPropertyAccessor @FirImplementationDetail internal constructor(
val delegate: FirSimpleFunction,
override val isGetter: Boolean,
override val propertySymbol: FirPropertySymbol,
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.fir.declarations.synthetic
import org.jetbrains.kotlin.fir.FirImplementationDetail
import org.jetbrains.kotlin.fir.FirModuleData
import org.jetbrains.kotlin.fir.declarations.DeprecationsProvider
import org.jetbrains.kotlin.fir.declarations.FirDeclarationStatus
@@ -24,6 +25,7 @@ class FirSyntheticPropertyBuilder {
var delegateSetter: FirSimpleFunction? = null
@OptIn(FirImplementationDetail::class)
fun build(): FirSyntheticProperty = FirSyntheticProperty(
moduleData, name, isVar = delegateSetter != null, symbol = symbol,
status = status ?: delegateGetter.status,