From ae0bc1c0783009424869e77bb99dd517401cb48b Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 27 May 2022 12:58:58 +0300 Subject: [PATCH] [FIR] Generate copy builder for FirTypeParameter --- .../builder/FirTypeParameterBuilder.kt | 21 +++++++++++++++++++ .../fir/tree/generator/BuilderConfigurator.kt | 4 ++++ 2 files changed, 25 insertions(+) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeParameterBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeParameterBuilder.kt index d0bf5c9b42b..77ed0739b87 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeParameterBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/declarations/builder/FirTypeParameterBuilder.kt @@ -69,3 +69,24 @@ inline fun buildTypeParameter(init: FirTypeParameterBuilder.() -> Unit): FirType } return FirTypeParameterBuilder().apply(init).build() } + +@OptIn(ExperimentalContracts::class) +inline fun buildTypeParameterCopy(original: FirTypeParameter, init: FirTypeParameterBuilder.() -> Unit): FirTypeParameter { + contract { + callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE) + } + val copyBuilder = FirTypeParameterBuilder() + copyBuilder.source = original.source + copyBuilder.moduleData = original.moduleData + copyBuilder.resolvePhase = original.resolvePhase + copyBuilder.origin = original.origin + copyBuilder.attributes = original.attributes.copy() + copyBuilder.name = original.name + copyBuilder.symbol = original.symbol + copyBuilder.containingDeclarationSymbol = original.containingDeclarationSymbol + copyBuilder.variance = original.variance + copyBuilder.isReified = original.isReified + copyBuilder.bounds.addAll(original.bounds) + copyBuilder.annotations.addAll(original.annotations) + return copyBuilder.apply(init).build() +} diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt index 74ab4956751..f65b89e27dc 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/BuilderConfigurator.kt @@ -91,6 +91,10 @@ object BuilderConfigurator : AbstractBuilderConfigurator(FirTree withCopy() } + builder(typeParameter) { + withCopy() + } + builder(field) { parents += declarationBuilder default("resolvePhase", "FirResolvePhase.DECLARATIONS")