name: add-ktnip-parameter-strategy
description: Adds a new parameter resolution strategy to the ktnip KSP processor. Use when handler functions need to receive a new parameter type (e.g. ChatMember, InlineQuery), or when adding support for a new resolvable type in Activity invocation.
Add Ktnip Parameter Strategy
Workflow
1. Add ParameterResolutionStrategy
- In ParameterResolutionStrategy.kt
- Add new
data class extending ParameterResolutionStrategy
- Include
typeName, isNullable; add strategy-specific fields (e.g. parameterName, updateTypeSimpleName)
data class MyParam(
override val typeName: TypeName,
override val isNullable: Boolean,
val myField: String,
) : ParameterResolutionStrategy()
2. Add TypeConstant (if new type)
3. Update ParameterResolver
- In ParameterResolver.kt
- Add branch in
resolve() when block:
- Match
typeName (use TypeConstants or in TypeMapper.getAllTypedUpdateTypes() for typed updates)
- Return new strategy instance
- Handle
@ParamMapping for parameter name if from parameters map
4. Update InvocationCodeGenerator
- In InvocationCodeGenerator.kt
- Add branch in
generateParameterResolution() when block
- Generate CodeBlock:
CodeBlock.of("val param%L = ...\n", parameterIndex, ...)
- Add imports via
fileBuilder.addImport(...) if needed
- Use
nullabilityMark for !! when non-null
5. Update generateInvocationCode (if needed)
- If strategy affects
isBotNeeded, isUpdateNeeded, isParametersNeeded, isUserNeeded: add to the strategies.any { ... } checks
Reference