JakeWharton / dagger-reflect

A reflection-based implementation of the Dagger dependency injection library for fast IDE builds.
Apache License 2.0
655 stars 44 forks source link

Component with generic parameter inheritance #201

Open Dkhusainov opened 4 years ago

Dkhusainov commented 4 years ago

dagger-reflect: 0.3.0

code:

fun main() {
  dagger.Dagger
    .create(MyComponent::class.java)
// DaggerMyComponent.create()
    .getS()
}

abstract class MyClass
interface GenericComponent<S: MyClass> {
  fun getS(): S
}

class MyClassImpl @javax.inject.Inject constructor(): MyClass()
@dagger.Component
interface MyComponent : GenericComponent<MyClassImpl>

error:

Exception in thread "main" java.lang.IllegalArgumentException: No provider available for S
    at dagger.reflect.Scope.getBinding(Scope.java:48)
    at dagger.reflect.ComponentInvocationHandler.createMethodInvocationHandler(ComponentInvocationHandler.java:99)

Dagger works as expected - function return an instance of MyClassImpl