diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt index 3813d575de2..25033ec6d67 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirCallableReferenceAccessImpl.kt @@ -38,6 +38,7 @@ internal class FirCallableReferenceAccessImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -52,6 +53,7 @@ internal class FirCallableReferenceAccessImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirCallableReferenceAccessImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt index d031fc47460..3f0f34df572 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirComponentCallImpl.kt @@ -47,6 +47,7 @@ internal class FirComponentCallImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } argumentList.accept(visitor, data) calleeReference.accept(visitor, data) @@ -62,6 +63,7 @@ internal class FirComponentCallImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirComponentCallImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) argumentList = argumentList.transform(transformer, data) transformCalleeReference(transformer, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt index a369bcff656..08336fbd6e4 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirDelegatedConstructorCallImpl.kt @@ -38,6 +38,7 @@ internal class FirDelegatedConstructorCallImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } argumentList.accept(visitor, data) + contextReceiverArguments.forEach { it.accept(visitor, data) } constructedTypeRef.accept(visitor, data) calleeReference.accept(visitor, data) } @@ -45,6 +46,7 @@ internal class FirDelegatedConstructorCallImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirDelegatedConstructorCallImpl { transformAnnotations(transformer, data) argumentList = argumentList.transform(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) constructedTypeRef = constructedTypeRef.transform(transformer, data) transformCalleeReference(transformer, data) return this diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt index 4fecd7fb0d4..2c292881670 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirFunctionCallImpl.kt @@ -41,6 +41,7 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -56,6 +57,7 @@ open class FirFunctionCallImpl @FirImplementationDetail constructor( override fun transformChildren(transformer: FirTransformer, data: D): FirFunctionCallImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirImplicitInvokeCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirImplicitInvokeCallImpl.kt index fe1365a401a..ebfec9459f6 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirImplicitInvokeCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirImplicitInvokeCallImpl.kt @@ -43,6 +43,7 @@ internal class FirImplicitInvokeCallImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -58,6 +59,7 @@ internal class FirImplicitInvokeCallImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirImplicitInvokeCallImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirIntegerLiteralOperatorCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirIntegerLiteralOperatorCallImpl.kt index 47a83bcaf27..738fbef9f55 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirIntegerLiteralOperatorCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirIntegerLiteralOperatorCallImpl.kt @@ -41,6 +41,7 @@ internal class FirIntegerLiteralOperatorCallImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -56,6 +57,7 @@ internal class FirIntegerLiteralOperatorCallImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirIntegerLiteralOperatorCallImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt index d5cdbc592b4..4d12d64597a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirPropertyAccessExpressionImpl.kt @@ -39,6 +39,7 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor( typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } calleeReference.accept(visitor, data) + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -53,6 +54,7 @@ class FirPropertyAccessExpressionImpl @FirImplementationDetail constructor( typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) transformCalleeReference(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt index 11d8e890251..7cf5be97fa1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThisReceiverExpressionImpl.kt @@ -40,6 +40,7 @@ internal class FirThisReceiverExpressionImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -54,6 +55,7 @@ internal class FirThisReceiverExpressionImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirThisReceiverExpressionImpl { typeRef = typeRef.transform(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt index c448e79644f..26e84f5b858 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirVariableAssignmentImpl.kt @@ -44,6 +44,7 @@ internal class FirVariableAssignmentImpl( override fun acceptChildren(visitor: FirVisitor, data: D) { calleeReference.accept(visitor, data) annotations.forEach { it.accept(visitor, data) } + contextReceiverArguments.forEach { it.accept(visitor, data) } typeArguments.forEach { it.accept(visitor, data) } explicitReceiver?.accept(visitor, data) if (dispatchReceiver !== explicitReceiver) { @@ -59,6 +60,7 @@ internal class FirVariableAssignmentImpl( override fun transformChildren(transformer: FirTransformer, data: D): FirVariableAssignmentImpl { transformCalleeReference(transformer, data) transformAnnotations(transformer, data) + contextReceiverArguments.transformInplace(transformer, data) transformTypeArguments(transformer, data) explicitReceiver = explicitReceiver?.transform(transformer, data) if (dispatchReceiver !== explicitReceiver) { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 4f97a727716..9b82a824785 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -351,7 +351,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() value = "whenRef.value.subject!!.typeRef" withGetter = true } - useTypes(whenExpressionType) + useTypes(whenExpression) } impl(wrappedDelegateExpression) { @@ -471,11 +471,11 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() impl(simpleFunction) impl(safeCallExpression) { - useTypes(safeCallCheckedSubjectType) + useTypes(checkedSafeCallSubject) } impl(checkedSafeCallSubject) { - useTypes(expressionType) + useTypes(expression) } impl(resolvedQualifier) { 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 971b49dc358..cc0f0ecf2ad 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 @@ -192,7 +192,7 @@ object NodeConfigurator : AbstractFieldConfigurator(FirTreeBuild } contextReceiverArgumentListOwner.configure { - +fieldList("contextReceiverArguments", expressionType, withReplace = true) + +fieldList("contextReceiverArguments", expression, withReplace = true) } qualifiedAccess.configure { diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt index f3c78760229..b619dab632a 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/Types.kt @@ -46,30 +46,24 @@ val operationKindType = type("fir.expressions", "LogicOperationKind") val coneKotlinTypeType = type(ConeKotlinType::class) val coneSimpleKotlinTypeType = type(ConeSimpleKotlinType::class) -val whenExpressionType = generatedType("expressions", "FirWhenExpression") -val expressionType = generatedType("expressions", "FirExpression") -val safeCallCheckedSubjectType = generatedType("expressions", "FirCheckedSafeCallSubject") - val whenRefType = generatedType("", "FirExpressionRef") val safeCallOriginalReceiverReferenceType = generatedType("", "FirExpressionRef") val safeCallCheckedSubjectReferenceType = generatedType("", "FirExpressionRef") val firModuleDataType = type("fir", "FirModuleData") -val emptyCfgReferenceType = generatedType("references.impl", "FirEmptyControlFlowGraphReference") -val noReceiverExpressionType = generatedType("expressions.impl", "FirNoReceiverExpression") -val implicitTypeRefType = generatedType("types.impl", "FirImplicitTypeRefImpl") +val noReceiverExpressionType = generatedType("expressions.impl", "FirNoReceiverExpression", firType = true) +val implicitTypeRefType = generatedType("types.impl", "FirImplicitTypeRefImpl", firType = true) val firQualifierPartType = type("fir.types", "FirQualifierPart") -val ConeErrorTypeType = type(ConeErrorType::class) val simpleNamedReferenceType = generatedType("references.impl", "FirSimpleNamedReference") -val explicitThisReferenceType = generatedType("references.impl", "FirExplicitThisReference") -val explicitSuperReferenceType = generatedType("references.impl", "FirExplicitSuperReference") -val implicitBooleanTypeRefType = generatedType("types.impl", "FirImplicitBooleanTypeRef") -val implicitNothingTypeRefType = generatedType("types.impl", "FirImplicitNothingTypeRef") -val implicitStringTypeRefType = generatedType("types.impl", "FirImplicitStringTypeRef") -val implicitUnitTypeRefType = generatedType("types.impl", "FirImplicitUnitTypeRef") +val explicitThisReferenceType = generatedType("references.impl", "FirExplicitThisReference", firType = true) +val explicitSuperReferenceType = generatedType("references.impl", "FirExplicitSuperReference", firType = true) +val implicitBooleanTypeRefType = generatedType("types.impl", "FirImplicitBooleanTypeRef", firType = true) +val implicitNothingTypeRefType = generatedType("types.impl", "FirImplicitNothingTypeRef", firType = true) +val implicitStringTypeRefType = generatedType("types.impl", "FirImplicitStringTypeRef", firType = true) +val implicitUnitTypeRefType = generatedType("types.impl", "FirImplicitUnitTypeRef", firType = true) val resolvePhaseType = type("fir.declarations", "FirResolvePhase") val propertyBodyResolveStateType = type("fir.declarations", "FirPropertyBodyResolveState") -val stubReferenceType = generatedType("references.impl", "FirStubReference") +val stubReferenceType = generatedType("references.impl", "FirStubReference", firType = true) val firBasedSymbolType = type("fir.symbols", "FirBasedSymbol") val backingFieldSymbolType = type("fir.symbols.impl", "FirBackingFieldSymbol") @@ -104,5 +98,5 @@ val deprecationsPerUseSiteType = type("fir.declarations", "DeprecationsPerUseSit val emptyAnnotationArgumentMappingType = type("fir.expressions.impl", "FirEmptyAnnotationArgumentMapping") val firPropertySymbolType = type("fir.symbols.impl", "FirPropertySymbol") -val errorTypeRefImplType = type("fir.types.impl", "FirErrorTypeRefImpl") +val errorTypeRefImplType = type("fir.types.impl", "FirErrorTypeRefImpl", firType = true) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeBuilder.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeBuilder.kt index a58ecddf941..3560fa554db 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeBuilder.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeBuilder.kt @@ -93,16 +93,16 @@ abstract class AbstractFirTreeBuilder { } } -fun generatedType(type: String): Type = generatedType("", type) +fun generatedType(type: String, firType: Boolean = false): Type = generatedType("", type, firType) -fun generatedType(packageName: String, type: String): Type { +fun generatedType(packageName: String, type: String, firType: Boolean = false): Type { val realPackage = BASE_PACKAGE + if (packageName.isNotBlank()) ".$packageName" else "" - return type(realPackage, type, exactPackage = true) + return type(realPackage, type, exactPackage = true, firType) } -fun type(packageName: String?, type: String, exactPackage: Boolean = false): Type { +fun type(packageName: String?, type: String, exactPackage: Boolean = false, firType: Boolean = false): Type { val realPackage = if (exactPackage) packageName else packageName?.let { "org.jetbrains.kotlin.$it" } - return Type(realPackage, type) + return Type(realPackage, type, firType) } fun type(type: String): Type = type(null, type) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt index 7994edba8be..7db6d62e7f4 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Field.kt @@ -219,5 +219,5 @@ class FieldList( ) } - override val isFirType: Boolean = baseType is AbstractElement + override val isFirType: Boolean = baseType is AbstractElement || (baseType is Type && baseType.firType) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Type.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Type.kt index 9584284ab43..da2256321eb 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Type.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Type.kt @@ -5,6 +5,6 @@ package org.jetbrains.kotlin.fir.tree.generator.model -data class Type(override val packageName: String?, override val type: String) : Importable { +data class Type(override val packageName: String?, override val type: String, val firType: Boolean = false) : Importable { val arguments = mutableListOf() -} \ No newline at end of file +}