diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index da5f1c648b3..f6e571c20e6 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -620,7 +620,7 @@ class FirDeclarationCompletionResultsWriter(private val finalSubstitutor: ConeSu override fun transformPropertyAccessor( propertyAccessor: FirPropertyAccessor, data: Nothing? - ): CompositeTransformResult { + ): CompositeTransformResult { propertyAccessor.transformReturnTypeRef(this, data) propertyAccessor.transformValueParameters(this, data) return propertyAccessor.compose() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt index 9cb54a8fcff..9f19aa6f4d1 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolveTransformer.kt @@ -109,10 +109,10 @@ class FirStatusResolveTransformer( override fun transformPropertyAccessor( propertyAccessor: FirPropertyAccessor, data: FirDeclarationStatus? - ): CompositeTransformResult { + ): CompositeTransformResult { propertyAccessor.transformStatus(this, propertyAccessor.resolveStatus(propertyAccessor.status, containingClass, isLocal = false)) @Suppress("UNCHECKED_CAST") - return transformDeclaration(propertyAccessor, data) as CompositeTransformResult + return transformDeclaration(propertyAccessor, data) } override fun transformConstructor( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsResolveTransformer.kt index 43415cd1ba0..d4a6587e8e2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/plugin/FirAnnotationArgumentsResolveTransformer.kt @@ -87,7 +87,7 @@ private class FirDeclarationsResolveTransformerForArgumentAnnotations( override fun transformPropertyAccessor( propertyAccessor: FirPropertyAccessor, data: ResolutionMode - ): CompositeTransformResult { + ): CompositeTransformResult { propertyAccessor.transformAnnotations(this, data) return propertyAccessor.compose() } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt index 1b253e1e2aa..b8b4246ffbf 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/FirPropertyAccessor.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -21,7 +22,7 @@ import org.jetbrains.kotlin.fir.visitors.* * DO NOT MODIFY IT MANUALLY */ -abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction, FirContractDescriptionOwner, FirTypeParametersOwner { +abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction, FirCallableMemberDeclaration, FirContractDescriptionOwner, FirTypeParametersOwner { abstract override val source: FirSourceElement? abstract override val session: FirSession abstract override val resolvePhase: FirResolvePhase @@ -32,11 +33,12 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction abstract override val body: FirBlock? + abstract override val status: FirDeclarationStatus + abstract override val containerSource: DeserializedContainerSource? abstract override val contractDescription: FirContractDescription abstract override val symbol: FirPropertyAccessorSymbol abstract val isGetter: Boolean abstract val isSetter: Boolean - abstract val status: FirDeclarationStatus abstract override val annotations: List abstract override val typeParameters: List @@ -62,9 +64,9 @@ abstract class FirPropertyAccessor : FirPureAbstractElement(), FirFunction transformBody(transformer: FirTransformer, data: D): FirPropertyAccessor - abstract override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessor - abstract fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessor + abstract override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessor abstract override fun transformAnnotations(transformer: FirTransformer, data: D): FirPropertyAccessor diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt index 7d8309b3825..faed373ccdc 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirPropertyAccessorBuilder.kt @@ -29,6 +29,7 @@ import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource /* * This file was generated automatically @@ -44,10 +45,11 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui override lateinit var returnTypeRef: FirTypeRef override val valueParameters: MutableList = mutableListOf() override var body: FirBlock? = null + lateinit var status: FirDeclarationStatus + var containerSource: DeserializedContainerSource? = null var contractDescription: FirContractDescription = FirEmptyContractDescription lateinit var symbol: FirPropertyAccessorSymbol var isGetter: Boolean by kotlin.properties.Delegates.notNull() - lateinit var status: FirDeclarationStatus override val annotations: MutableList = mutableListOf() val typeParameters: MutableList = mutableListOf() @@ -61,10 +63,11 @@ class FirPropertyAccessorBuilder : FirFunctionBuilder, FirAnnotationContainerBui returnTypeRef, valueParameters, body, + status, + containerSource, contractDescription, symbol, isGetter, - status, annotations, typeParameters, ) @@ -93,10 +96,11 @@ inline fun buildPropertyAccessorCopy(original: FirPropertyAccessor, init: FirPro copyBuilder.returnTypeRef = original.returnTypeRef copyBuilder.valueParameters.addAll(original.valueParameters) copyBuilder.body = original.body + copyBuilder.status = original.status + copyBuilder.containerSource = original.containerSource copyBuilder.contractDescription = original.contractDescription copyBuilder.symbol = original.symbol copyBuilder.isGetter = original.isGetter - copyBuilder.status = original.status copyBuilder.annotations.addAll(original.annotations) copyBuilder.typeParameters.addAll(original.typeParameters) return copyBuilder.apply(init).build() diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt index 006b5756c03..77cf8f6e661 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/impl/FirPropertyAccessorImpl.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.fir.expressions.FirBlock import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.fir.visitors.* /* @@ -37,10 +38,11 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( override var returnTypeRef: FirTypeRef, override val valueParameters: MutableList, override var body: FirBlock?, + override var status: FirDeclarationStatus, + override val containerSource: DeserializedContainerSource?, override var contractDescription: FirContractDescription, override val symbol: FirPropertyAccessorSymbol, override val isGetter: Boolean, - override var status: FirDeclarationStatus, override val annotations: MutableList, override val typeParameters: MutableList, ) : FirPropertyAccessor() { @@ -58,8 +60,8 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( controlFlowGraphReference?.accept(visitor, data) valueParameters.forEach { it.accept(visitor, data) } body?.accept(visitor, data) - contractDescription.accept(visitor, data) status.accept(visitor, data) + contractDescription.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } typeParameters.forEach { it.accept(visitor, data) } } @@ -69,8 +71,8 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( controlFlowGraphReference = controlFlowGraphReference?.transformSingle(transformer, data) transformValueParameters(transformer, data) transformBody(transformer, data) - transformContractDescription(transformer, data) transformStatus(transformer, data) + transformContractDescription(transformer, data) transformAnnotations(transformer, data) transformTypeParameters(transformer, data) return this @@ -95,13 +97,13 @@ open class FirPropertyAccessorImpl @FirImplementationDetail constructor( return this } - override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { - contractDescription = contractDescription.transformSingle(transformer, data) + override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { + status = status.transformSingle(transformer, data) return this } - override fun transformStatus(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { - status = status.transformSingle(transformer, data) + override fun transformContractDescription(transformer: FirTransformer, data: D): FirPropertyAccessorImpl { + contractDescription = contractDescription.transformSingle(transformer, data) return this } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt index 926a38ae9e3..011b3ace157 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/visitors/FirTransformer.kt @@ -290,7 +290,7 @@ abstract class FirTransformer : FirVisitor { + open fun transformPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): CompositeTransformResult { return transformElement(propertyAccessor, data) } @@ -794,7 +794,7 @@ abstract class FirTransformer : FirVisitor { + final override fun visitPropertyAccessor(propertyAccessor: FirPropertyAccessor, data: D): CompositeTransformResult { return transformPropertyAccessor(propertyAccessor, data) } diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt index acc0c3ce345..536363d8dda 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/impl/FirDefaultPropertyAccessor.kt @@ -42,10 +42,11 @@ abstract class FirDefaultPropertyAccessor( propertyTypeRef, valueParameters, body = null, + FirDeclarationStatusImpl(visibility, Modality.FINAL), + containerSource = null, contractDescription = FirEmptyContractDescription, symbol, isGetter, - FirDeclarationStatusImpl(visibility, Modality.FINAL), annotations = mutableListOf(), typeParameters = mutableListOf(), ) { 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 a50fb3404dc..0ab7eca56b6 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 @@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.FirVisitor +import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource class FirSyntheticPropertyAccessor( val delegate: FirSimpleFunction, @@ -70,6 +71,8 @@ class FirSyntheticPropertyAccessor( override val contractDescription: FirContractDescription = FirEmptyContractDescription + override val containerSource: DeserializedContainerSource? get() = null + override fun acceptChildren(visitor: FirVisitor, data: D) { delegate.accept(visitor, data) controlFlowGraphReference?.accept(visitor, data) @@ -135,4 +138,4 @@ class FirSyntheticPropertyAccessor( override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?) { throw AssertionError("Mutation of synthetic property accessor isn't supported") } -} \ No newline at end of file +} diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt index ceba6d555ea..c54d63eb90d 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/FirTreeBuilder.kt @@ -55,7 +55,7 @@ object FirTreeBuilder : AbstractFirTreeBuilder() { val contractDescriptionOwner = element("ContractDescriptionOwner", Declaration) val simpleFunction = element("SimpleFunction", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner) - val propertyAccessor = element("PropertyAccessor", Declaration, function, contractDescriptionOwner, typeParametersOwner) + val propertyAccessor = element("PropertyAccessor", Declaration, function, callableMemberDeclaration, contractDescriptionOwner, typeParametersOwner) val constructor = element("Constructor", Declaration, function, callableMemberDeclaration, typeParameterRefsOwner) val file = element("File", Declaration, annotatedDeclaration) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt index 201d11a5c68..7850c12919a 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/NodeConfigurator.kt @@ -318,10 +318,10 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild propertyAccessor.configure { parentArg(function, "F", propertyAccessor) + parentArg(callableMemberDeclaration, "F", propertyAccessor) +symbol("FirPropertyAccessorSymbol") +booleanField("isGetter") +booleanField("isSetter") - +status.withTransform() +annotations +typeParameters }