koin-annotations
koin-annotations copied to clipboard
Receiver injection in extension functions
Describe the bug
When using @Single with extension function koin-annotations generates invalid code, ignoring the reciever.
To Reproduce Steps to reproduce the behavior:
- Create module with
@Module - Create function with any receiver
- Build project
- See error.
Current behavior module definition:
@Module @ComponentScan ServerDI
@Single(createdAtStart = true)
fun Kord.handleGuildJoin() = on<GuildCreateEvent> {
}
Generated module code (invalid):
package org.koin.ksp.generated
import org.koin.core.module.Module
import org.koin.dsl.bind
import org.koin.dsl.module
public val dev_aaur1s_portaler_server_ServerDI : Module get() = module {
single(createdAtStart=true) { _ -> dev.aaur1s.portaler.server.handleGuildJoin() } bind(kotlinx.coroutines.Job::class)
}
public val dev.aaur1s.portaler.server.ServerDI.module : org.koin.core.module.Module get() = dev_aaur1s_portaler_server_ServerDI
Expected behavior module definition is same Generated module code (correct):
package org.koin.ksp.generated
import dev.aaur1s.portaler.server.handleGuildJoin
import dev.kord.core.Kord
import org.koin.core.module.Module
import org.koin.dsl.bind
import org.koin.dsl.module
public val dev_aaur1s_portaler_server_ServerDI : Module get() = module {
single(createdAtStart=true) { _ -> get<Kord>().run { handleGuildJoin() } } bind(kotlinx.coroutines.Job::class)
}
public val dev.aaur1s.portaler.server.ServerDI.module : org.koin.core.module.Module get() = dev_aaur1s_portaler_server_ServerDI
Koin project used and used version: kotlin: 2.2.0-RC koin: 4.0.4 koin-annotations: 2.0.1-RC1 ksp: 2.2.0-RC-2.0.1
Afterwords With upcoming context parameters in kotlin context parameters injection would be really cool