Context Parameters¶
KotlinPoet supports Kotlin’s context parameters feature, which allows you to add context parameters to functions and properties. Context parameters are added using the contextParameter()
method:
val greet = FunSpec.builder("greet")
.contextParameter("user", String::class)
.addStatement("println(\"Hello, ${'$'}user!\")")
.build()
The code above generates:
context(user: kotlin.String)
public fun greet() {
println("Hello, $user!")
}
You can add multiple context parameters:
val loggerType = ClassName("java.util.logging", "Logger")
val configType = ClassName("com.example", "Config")
val logger = ContextParameter("logger", loggerType)
val config = ContextParameter("config", configType)
val processData = FunSpec.builder("processData")
.contextParameter(logger)
.contextParameter(config)
.addStatement("%N.info(\"Processing with config: ${'$'}%N\")", logger, config)
.build()
This generates:
context(logger: com.example.Logger, config: com.example.Config)
public fun processData() {
logger.info("Processing with config: $config")
}
Note: context receivers and context parameters cannot be used together.