FIR IDE: Fix completion in case of function with parameters

This commit is contained in:
Simon Ogorodnik
2020-08-13 17:36:37 +03:00
parent 863de52f7a
commit c7d6a79c25
7 changed files with 60 additions and 5 deletions
@@ -85,3 +85,27 @@ inline fun buildSimpleFunction(init: FirSimpleFunctionBuilder.() -> Unit): FirSi
}
return FirSimpleFunctionBuilder().apply(init).build()
}
@OptIn(ExperimentalContracts::class)
inline fun buildSimpleFunctionCopy(original: FirSimpleFunction, init: FirSimpleFunctionBuilder.() -> Unit): FirSimpleFunction {
contract {
callsInPlace(init, kotlin.contracts.InvocationKind.EXACTLY_ONCE)
}
val copyBuilder = FirSimpleFunctionBuilder()
copyBuilder.source = original.source
copyBuilder.session = original.session
copyBuilder.resolvePhase = original.resolvePhase
copyBuilder.origin = original.origin
copyBuilder.returnTypeRef = original.returnTypeRef
copyBuilder.receiverTypeRef = original.receiverTypeRef
copyBuilder.valueParameters.addAll(original.valueParameters)
copyBuilder.body = original.body
copyBuilder.status = original.status
copyBuilder.containerSource = original.containerSource
copyBuilder.contractDescription = original.contractDescription
copyBuilder.name = original.name
copyBuilder.symbol = original.symbol
copyBuilder.annotations.addAll(original.annotations)
copyBuilder.typeParameters.addAll(original.typeParameters)
return copyBuilder.apply(init).build()
}
@@ -269,6 +269,7 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
default("contractDescription", "FirEmptyContractDescription")
useTypes(emptyContractDescriptionType)
openBuilder()
withCopy()
}
builder(tryExpression) {