[FIR] Generate copy builder for FirTypeParameter

This commit is contained in:
Dmitriy Novozhilov
2022-05-27 12:58:58 +03:00
committed by teamcity
parent 430ea414a9
commit ae0bc1c078
2 changed files with 25 additions and 0 deletions
@@ -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()
}
@@ -91,6 +91,10 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
withCopy()
}
builder(typeParameter) {
withCopy()
}
builder(field) {
parents += declarationBuilder
default("resolvePhase", "FirResolvePhase.DECLARATIONS")