Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mysterious error when Dagger tries to report missing binding in certain circumstances #1614

Open
henryptung opened this issue Sep 20, 2019 · 6 comments

Comments

@henryptung
Copy link

After looking into it a bit, seems like Dagger is not properly handling annotations on interfaces from libraries that themselves have annotations not on the current module's compile classpath.

The annotation itself is available, but the annotation attribute return type is marked as <nulltype>(even though value() is clearly a string), which causes a failure during validation.

Caused by: java.lang.IllegalArgumentException: <nulltype> cannot be represented as a Class<?>.
        at dagger.shaded.auto.common.MoreTypes$IsTypeOf.defaultAction(MoreTypes.java:832)
        at dagger.shaded.auto.common.MoreTypes$IsTypeOf.defaultAction(MoreTypes.java:823)
        at com.sun.tools.javac.code.Type$BottomType.accept(Type.java:2275)
        at dagger.shaded.auto.common.MoreTypes.isTypeOf(MoreTypes.java:820)
        at dagger.shaded.auto.common.SuperficialValidation$3.defaultAction(SuperficialValidation.java:201)
        at dagger.shaded.auto.common.SuperficialValidation$3.defaultAction(SuperficialValidation.java:199)
        at com.sun.tools.javac.code.Attribute$Constant.accept(Attribute.java:91)
        at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValue(SuperficialValidation.java:281)
        at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValues(SuperficialValidation.java:191)
        at dagger.shaded.auto.common.SuperficialValidation.validateAnnotation(SuperficialValidation.java:182)
        at dagger.shaded.auto.common.SuperficialValidation.validateAnnotations(SuperficialValidation.java:173)
        at dagger.shaded.auto.common.SuperficialValidation.isValidBaseElement(SuperficialValidation.java:103)
        at dagger.shaded.auto.common.SuperficialValidation.access$100(SuperficialValidation.java:48)
        at dagger.shaded.auto.common.SuperficialValidation$1.visitVariable(SuperficialValidation.java:73)
        at dagger.shaded.auto.common.SuperficialValidation$1.visitVariable(SuperficialValidation.java:59)
        at com.sun.tools.javac.code.Symbol$VarSymbol.accept(Symbol.java:1561)
        at dagger.shaded.auto.common.SuperficialValidation.validateElement(SuperficialValidation.java:98)
        at dagger.internal.codegen.InjectionAnnotations.getQualifier(InjectionAnnotations.java:40)
        at dagger.internal.codegen.DependencyRequestFactory.forRequiredResolvedVariable(DependencyRequestFactory.java:134)
        at dagger.internal.codegen.DependencyRequestFactory.forRequiredResolvedVariables(DependencyRequestFactory.java:74)
        at dagger.internal.codegen.InjectionSiteFactory$1.visitExecutableAsMethod(InjectionSiteFactory.java:61)
        at dagger.internal.codegen.InjectionSiteFactory$1.visitExecutableAsMethod(InjectionSiteFactory.java:53)
        at com.sun.tools.javac.code.Symbol$MethodSymbol.accept(Symbol.java:1949)
        at dagger.internal.codegen.InjectionSiteFactory.getInjectionSites(InjectionSiteFactory.java:106)
        at dagger.internal.codegen.BindingFactory.membersInjectionBinding(BindingFactory.java:489)
        at dagger.internal.codegen.InjectBindingRegistryImpl.tryRegisterMembersInjectedType(InjectBindingRegistryImpl.java:275)
        at dagger.internal.codegen.InjectBindingRegistryImpl.getOrFindMembersInjectionBinding(InjectBindingRegistryImpl.java:326)
        at dagger.internal.codegen.MissingBindingValidator.typeHasInjectionSites(MissingBindingValidator.java:127)
        at dagger.internal.codegen.MissingBindingValidator.missingBindingErrorMessage(MissingBindingValidator.java:89)
        at dagger.internal.codegen.MissingBindingValidator.reportMissingBinding(MissingBindingValidator.java:71)
        at dagger.internal.codegen.MissingBindingValidator.lambda$visitGraph$0(MissingBindingValidator.java:65)
        at dagger.internal.codegen.MissingBindingValidator.visitGraph(MissingBindingValidator.java:65)
@BJKarper
Copy link

BJKarper commented Oct 3, 2019

I was actually coming here to post the same issue. I haven't been able to make heads or tails of it.
@henryptung have you made any additional progress?

@okaymak
Copy link

okaymak commented Dec 16, 2019

I had the same issue, and took me a lot of trial and error to find the cause.
I am using kotlin and have all dagger modules inside a library module. My issue was caused by Qualifiers. I used custom annotations which did not specify any AnnotationTarget. I added a random target which definitely should not match, so the editor would help me out to pick the correct ones. After this the build completes successfully.

Edit: still get the same error

This issue is might be caused by this.

@chrisjenx
Copy link

Ran into this today, seems to be causes by complex Multibinding Key. Not sure what, but removed my multi bindings with complex keys and it goes way.

It's an annotation with two enums in it

@chrisjenx
Copy link

FYI, if it helps the annotation is defined in kotlin and the two referenced enums are in a different module - it looks like a kapt bug looking at the exception - going to try and move stuff to java/same module to see if it fixes it.

@chrisjenx
Copy link

OK, reproduceable ;

Module A: Can be kt or java doesn't matter

enum EnumOne {}
enum EnumTwo {}

Module B: (implements module a)

Complex Key Type:

@Documented
@Target(METHOD)
@Retention(RUNTIME)
@MapKey(unwrapValue = false)
public @interface StateNodeKey {
  EnumOne one();
  EnumTwo two();
}


@Module 
interface Module {

@Binds @IntoMap @StateNodeKey(one = EnumOne.ONE, two = EnumTwo.ONE)
fun bindOneOne(): String = "something"

Will produce:

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':libraries:core_state:kaptDebugKotlin'.
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:205)
	at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:263)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:203)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:184)
	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:114)
	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:372)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:359)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:352)
	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:338)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException: A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
	at org.gradle.workers.internal.DefaultWorkerExecutor$WorkItemExecution.waitForCompletion(DefaultWorkerExecutor.java:334)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:142)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.access$000(DefaultAsyncWorkTracker.java:34)
	at org.gradle.internal.work.DefaultAsyncWorkTracker$1.run(DefaultAsyncWorkTracker.java:106)
	at org.gradle.internal.Factories$1.create(Factories.java:26)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutLocks(DefaultWorkerLeaseService.java:260)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:171)
	at org.gradle.internal.work.DefaultWorkerLeaseService.withoutProjectLock(DefaultWorkerLeaseService.java:165)
	at org.gradle.internal.work.StopShieldingWorkerLeaseService.withoutProjectLock(StopShieldingWorkerLeaseService.java:95)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForItemsAndGatherFailures(DefaultAsyncWorkTracker.java:102)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForAll(DefaultAsyncWorkTracker.java:80)
	at org.gradle.internal.work.DefaultAsyncWorkTracker.waitForCompletion(DefaultAsyncWorkTracker.java:68)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$3.run(ExecuteActionsTaskExecuter.java:576)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:402)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:394)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:92)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:553)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:536)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$300(ExecuteActionsTaskExecuter.java:109)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:276)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:265)
	at org.gradle.internal.execution.steps.ExecuteStep.lambda$execute$0(ExecuteStep.java:32)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:32)
	at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:26)
	at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:67)
	at org.gradle.internal.execution.steps.CleanupOutputsStep.execute(CleanupOutputsStep.java:36)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:49)
	at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:34)
	at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:43)
	at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:73)
	at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:54)
	at org.gradle.internal.execution.steps.CatchExceptionStep.execute(CatchExceptionStep.java:34)
	at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:44)
	at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:54)
	at org.gradle.internal.execution.steps.SnapshotOutputsStep.execute(SnapshotOutputsStep.java:38)
	at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:49)
	at org.gradle.internal.execution.steps.CacheStep.executeWithoutCache(CacheStep.java:159)
	at org.gradle.internal.execution.steps.CacheStep.executeAndStoreInCache(CacheStep.java:135)
	at org.gradle.internal.execution.steps.CacheStep.lambda$executeWithCache$2(CacheStep.java:112)
	at org.gradle.internal.execution.steps.CacheStep.lambda$executeWithCache$3(CacheStep.java:112)
	at org.gradle.internal.Try$Success.map(Try.java:162)
	at org.gradle.internal.execution.steps.CacheStep.executeWithCache(CacheStep.java:81)
	at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:71)
	at org.gradle.internal.execution.steps.CacheStep.execute(CacheStep.java:43)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:44)
	at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:33)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:38)
	at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:24)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:92)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:85)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
	at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:76)
	at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:37)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:36)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:26)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:94)
	at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:49)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:79)
	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:53)
	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:78)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:78)
	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:39)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:40)
	at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:28)
	at org.gradle.internal.execution.impl.DefaultWorkExecutor.execute(DefaultWorkExecutor.java:33)
	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:192)
	... 30 more
Caused by: java.lang.reflect.InvocationTargetException
	at org.jetbrains.kotlin.gradle.internal.KaptExecution.run(KaptWithoutKotlincTask.kt:158)
	at org.gradle.workers.internal.AdapterWorkAction.execute(AdapterWorkAction.java:57)
	at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
	at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:98)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
	at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:416)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$CallableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:406)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor$1.execute(DefaultBuildOperationExecutor.java:165)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:250)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:158)
	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:102)
	at org.gradle.internal.operations.DelegatingBuildOperationExecutor.call(DelegatingBuildOperationExecutor.java:36)
	at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
	at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
	at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:198)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:215)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
	at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
	... 3 more
Caused by: org.jetbrains.kotlin.kapt3.base.util.KaptBaseError: Exception while annotation processing
	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:84)
	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing$default(annotationProcessing.kt:35)
	at org.jetbrains.kotlin.kapt3.base.Kapt.kapt(Kapt.kt:45)
	... 25 more
Caused by: java.lang.IllegalArgumentException: <nulltype> cannot be represented as a Class<?>.
	at dagger.shaded.auto.common.MoreTypes$IsTypeOf.defaultAction(MoreTypes.java:832)
	at dagger.shaded.auto.common.MoreTypes$IsTypeOf.defaultAction(MoreTypes.java:823)
	at com.sun.tools.javac.code.Type$BottomType.accept(Type.java:1765)
	at dagger.shaded.auto.common.MoreTypes.isTypeOf(MoreTypes.java:820)
	at dagger.shaded.auto.common.SuperficialValidation$3.defaultAction(SuperficialValidation.java:201)
	at dagger.shaded.auto.common.SuperficialValidation$3.defaultAction(SuperficialValidation.java:199)
	at com.sun.tools.javac.code.Attribute$Constant.accept(Attribute.java:85)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValue(SuperficialValidation.java:281)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValues(SuperficialValidation.java:191)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotation(SuperficialValidation.java:182)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotations(SuperficialValidation.java:173)
	at dagger.shaded.auto.common.SuperficialValidation.isValidBaseElement(SuperficialValidation.java:103)
	at dagger.shaded.auto.common.SuperficialValidation.access$100(SuperficialValidation.java:48)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitVariable(SuperficialValidation.java:73)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitVariable(SuperficialValidation.java:59)
	at com.sun.tools.javac.code.Symbol$VarSymbol.accept(Symbol.java:1237)
	at dagger.shaded.auto.common.SuperficialValidation.validateElement(SuperficialValidation.java:98)
	at dagger.shaded.auto.common.SuperficialValidation$3.visitEnumConstant(SuperficialValidation.java:235)
	at dagger.shaded.auto.common.SuperficialValidation$3.visitEnumConstant(SuperficialValidation.java:199)
	at com.sun.tools.javac.code.Attribute$Enum.accept(Attribute.java:357)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValue(SuperficialValidation.java:281)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotationValues(SuperficialValidation.java:191)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotation(SuperficialValidation.java:182)
	at dagger.shaded.auto.common.SuperficialValidation.validateAnnotations(SuperficialValidation.java:173)
	at dagger.shaded.auto.common.SuperficialValidation.isValidBaseElement(SuperficialValidation.java:103)
	at dagger.shaded.auto.common.SuperficialValidation.access$100(SuperficialValidation.java:48)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitExecutable(SuperficialValidation.java:78)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitExecutable(SuperficialValidation.java:59)
	at com.sun.tools.javac.code.Symbol$MethodSymbol.accept(Symbol.java:1602)
	at dagger.shaded.auto.common.SuperficialValidation.validateElement(SuperficialValidation.java:98)
	at dagger.shaded.auto.common.SuperficialValidation.validateElements(SuperficialValidation.java:51)
	at dagger.shaded.auto.common.SuperficialValidation.isValidBaseElement(SuperficialValidation.java:104)
	at dagger.shaded.auto.common.SuperficialValidation.access$100(SuperficialValidation.java:48)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitType(SuperficialValidation.java:66)
	at dagger.shaded.auto.common.SuperficialValidation$1.visitType(SuperficialValidation.java:59)
	at com.sun.tools.javac.code.Symbol$ClassSymbol.accept(Symbol.java:1150)
	at dagger.shaded.auto.common.SuperficialValidation.validateElement(SuperficialValidation.java:98)
	at dagger.shaded.auto.common.BasicAnnotationProcessor.validElements(BasicAnnotationProcessor.java:305)
	at dagger.shaded.auto.common.BasicAnnotationProcessor.process(BasicAnnotationProcessor.java:181)
	at org.jetbrains.kotlin.kapt3.base.incremental.IncrementalProcessor.process(incrementalProcessors.kt)
	at org.jetbrains.kotlin.kapt3.base.ProcessorWrapper.process(annotationProcessing.kt:147)
	at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:802)
	at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:713)
	at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
	at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1043)
	at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1184)
	at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
	at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1068)
	at org.jetbrains.kotlin.kapt3.base.AnnotationProcessingKt.doAnnotationProcessing(annotationProcessing.kt:79)

Moving the enum into the same module fixes the issue for me.
I tried the complex key as two strings too and that works - so to me I looks like kapt/dagger can't get the class types for those enums for the implemented module?

@realdadfish
Copy link

Might be #1991

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants