[FIR2IR] Approximate types for lambdas before passing to serialization

This commit is contained in:
simon.ogorodnik
2020-05-20 20:21:00 +03:00
parent b92194229c
commit dbc564e74e
4 changed files with 56 additions and 5 deletions
@@ -72,3 +72,24 @@ inline fun buildValueParameter(init: FirValueParameterBuilder.() -> Unit): FirVa
}
return FirValueParameterBuilder().apply(init).build()
}
@OptIn(ExperimentalContracts::class)
inline fun buildValueParameterCopy(original: FirValueParameter, init: FirValueParameterBuilder.() -> Unit): FirValueParameter {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
val copyBuilder = FirValueParameterBuilder()
copyBuilder.source = original.source
copyBuilder.session = original.session
copyBuilder.resolvePhase = original.resolvePhase
copyBuilder.origin = original.origin
copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.name = original.name
copyBuilder.symbol = original.symbol
copyBuilder.annotations.addAll(original.annotations)
copyBuilder.defaultValue = original.defaultValue
copyBuilder.isCrossinline = original.isCrossinline
copyBuilder.isNoinline = original.isNoinline
copyBuilder.isVararg = original.isVararg
return copyBuilder.apply(init).build()
}
@@ -245,6 +245,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
builder(valueParameter, type = "FirValueParameterImpl") {
openBuilder()
withCopy()
}
builder(valueParameter, type = "FirDefaultSetterValueParameter") {