From bb40ce0bfc3b07dc156fe81ca9d0af11e9a4dbd0 Mon Sep 17 00:00:00 2001 From: Dmitrii Gridin Date: Thu, 12 Oct 2023 20:26:02 +0200 Subject: [PATCH] [FIR] FirSyntheticProperty: make constructor internal Also, backingField can be moved into the body ^KT-61990 --- .../JavaAnnotationSyntheticPropertiesScope.kt | 27 +++++++++---------- .../synthetic/FirSyntheticProperty.kt | 6 +++-- .../synthetic/FirSyntheticPropertyAccessor.kt | 3 ++- .../synthetic/FirSyntheticPropertyBuilder.kt | 2 ++ 4 files changed, 21 insertions(+), 17 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt index 0ccc0689d50..796a34e4c2d 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/scopes/JavaAnnotationSyntheticPropertiesScope.kt @@ -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) } } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt index 48403630c6d..f30d81c17b0 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticProperty.kt @@ -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 diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt index b3b4e8f2745..74408477d7b 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyAccessor.kt @@ -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, diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt index 6696d488081..5061109a62f 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/synthetic/FirSyntheticPropertyBuilder.kt @@ -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,