evant / kotlin-inject

Dependency injection lib for kotlin
Apache License 2.0
1.14k stars 51 forks source link

Typealiases lead to KSP StackOverflowException #353

Closed eygraber closed 4 months ago

eygraber commented 4 months ago

I have the following code:

@MyScope
@Inject
internal class MyFeatureFoo

internal typealias Foo = MyFeatureFoo

@Component
abstract class FooComponent {
  abstract val foo: Foo
}

class FooHolder {
  val component = FooComponent.create()

  val foo: Foo = component.foo
}

When MyFeatureFoo is annotated with MyScope I get the following SOE when building. Removing the annotation and building is successful, as is removing the Foo typealias.

e: java.lang.StackOverflowError
    at com.google.devtools.ksp.IdKey.hashCode(KSPUtils.kt:8)
    at java.base/java.util.HashMap.hash(HashMap.java:338)
    at java.base/java.util.HashMap.getNode(HashMap.java:568)
    at java.base/java.util.LinkedHashMap.get(LinkedHashMap.java:441)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeImpl$Companion.getCached(KSTypeImpl.kt:154)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeImplKt.getKSTypeCached(KSTypeImpl.kt:144)
    at com.google.devtools.ksp.processing.impl.ResolverImpl.resolveUserType(ResolverImpl.kt:696)
    at com.google.devtools.ksp.symbol.impl.kotlin.KSTypeReferenceImpl.resolve(KSTypeReferenceImpl.kt:124)
    at me.tatarka.kotlin.ast.KSUtilKt.hasName(KSUtil.kt:32)
    at me.tatarka.kotlin.ast.KSUtilKt.hasAnnotation(KSUtil.kt:28)
    at me.tatarka.kotlin.ast.KSAstAnnotated$DefaultImpls.hasAnnotation(KSAst.kt:107)
    at me.tatarka.kotlin.ast.KSAstHasModifiers$DefaultImpls.hasAnnotation(KSAst.kt:117)
    at me.tatarka.kotlin.ast.KSAstClass.hasAnnotation(KSAst.kt:134)
    at me.tatarka.inject.compiler.InjectGeneratorKt.isInject(InjectGenerator.kt:199)
    at me.tatarka.inject.compiler.InjectGeneratorKt.findInjectConstructors(InjectGenerator.kt:210)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:234)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
    at me.tatarka.inject.compiler.TypeResultResolver.Scoped(TypeResultResolver.kt:440)
    at me.tatarka.inject.compiler.TypeResultResolver.constructor(TypeResultResolver.kt:371)
    at me.tatarka.inject.compiler.TypeResultResolver.findType(TypeResultResolver.kt:236)
    at me.tatarka.inject.compiler.TypeResultResolver.resolveOrNull(TypeResultResolver.kt:49)
    at me.tatarka.inject.compiler.TypeResultResolver.resolve(TypeResultResolver.kt:39)
       <truncated>