Kotlin ClassCastException Lint Error Timber 4.7.0
See original GitHub issueTimber 4.7.0
with Android Gradle 3.1.0
java.lang.ClassCastException: org.jetbrains.uast.kotlin.KotlinUSimpleReferenceExpression cannot be cast to org.jetbrains.uast.UCallExpression
at timber.lint.WrongTimberUsageDetector.isLoggingExceptionMessage(WrongTimberUsageDetector.java:552)
at timber.lint.WrongTimberUsageDetector.checkExceptionLogging(WrongTimberUsageDetector.java:535)
at timber.lint.WrongTimberUsageDetector.visitMethod(WrongTimberUsageDetector.java:95)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingPsiVisitor.visitMethodCallExpression(UElementVisitor.kt:1027)
at com.android.tools.lint.client.api.UElementVisitor$DelegatingPsiVisitor.visitCallExpression(UElementVisitor.kt:1007)
at org.jetbrains.uast.kotlin.KotlinUFunctionCallExpression.accept(KotlinUFunctionCallExpression.kt:114)
at org.jetbrains.uast.UQualifiedReferenceExpression$DefaultImpls.accept(UQualifiedReferenceExpression.kt:48)
at org.jetbrains.uast.kotlin.KotlinUQualifiedReferenceExpression.accept(KotlinUQualifiedReferenceExpression.kt:29)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UBlockExpression$DefaultImpls.accept(UBlockExpression.kt:35)
at org.jetbrains.uast.kotlin.KotlinUBlockExpression.accept(KotlinUBlockExpression.kt:24)
at org.jetbrains.uast.UCatchClause$DefaultImpls.accept(UTryExpression.kt:135)
at org.jetbrains.uast.kotlin.KotlinUCatchClause.accept(KotlinUCatchClause.kt:26)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UTryExpression$DefaultImpls.accept(UTryExpression.kt:85)
at org.jetbrains.uast.kotlin.KotlinUTryExpression.accept(KotlinUTryExpression.kt:25)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UBlockExpression$DefaultImpls.accept(UBlockExpression.kt:35)
at org.jetbrains.uast.kotlin.KotlinUBlockExpression.accept(KotlinUBlockExpression.kt:24)
at org.jetbrains.uast.UAnnotationMethod$DefaultImpls.accept(UMethod.kt:102)
at org.jetbrains.uast.kotlin.declarations.KotlinUMethod.accept(KotlinUMethod.kt:35)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UClass$DefaultImpls.accept(UClass.kt:63)
at org.jetbrains.uast.kotlin.AbstractKotlinUClass.accept(KotlinUClass.kt:32)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UClass$DefaultImpls.accept(UClass.kt:63)
at org.jetbrains.uast.kotlin.AbstractKotlinUClass.accept(KotlinUClass.kt:32)
at org.jetbrains.uast.internal.ImplementationUtilsKt.acceptList(implementationUtils.kt:23)
at org.jetbrains.uast.UFile$DefaultImpls.accept(UFile.kt:91)
at org.jetbrains.uast.kotlin.KotlinUFile.accept(KotlinUFile.kt:30)
at com.android.tools.lint.client.api.UElementVisitor$visitFile$3.run(UElementVisitor.kt:258)
at com.android.tools.lint.client.api.LintClient.runReadAction(LintClient.kt:1439)
at com.android.tools.lint.client.api.LintDriver$LintClientWrapper.runReadAction(LintDriver.kt:1900)
at com.android.tools.lint.client.api.UElementVisitor.visitFile(UElementVisitor.kt:255)
at com.android.tools.lint.client.api.LintDriver$visitJavaFiles$1.run(LintDriver.kt:1476)
at com.android.tools.lint.client.api.LintClient.runReadAction(LintClient.kt:1439)
at com.android.tools.lint.client.api.LintDriver$LintClientWrapper.runReadAction(LintDriver.kt:1900)
at com.android.tools.lint.client.api.LintDriver.visitJavaFiles(LintDriver.kt:1476)
at com.android.tools.lint.client.api.LintDriver.visitJavaFiles(LintDriver.kt:1445)
at com.android.tools.lint.client.api.LintDriver.checkJava(LintDriver.kt:1423)
at com.android.tools.lint.client.api.LintDriver.runFileDetectors(LintDriver.kt:962)
at com.android.tools.lint.client.api.LintDriver.checkProject(LintDriver.kt:812)
at com.android.tools.lint.client.api.LintDriver.analyze(LintDriver.kt:345)
at com.android.tools.lint.LintCliClient.run(LintCliClient.java:179)
at com.android.tools.lint.gradle.LintGradleClient.run(LintGradleClient.java:254)
at com.android.tools.lint.gradle.LintGradleExecution.runLint(LintGradleExecution.java:257)
at com.android.tools.lint.gradle.LintGradleExecution.lintSingleVariant(LintGradleExecution.java:359)
at com.android.tools.lint.gradle.LintGradleExecution.analyze(LintGradleExecution.java:93)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.android.tools.lint.gradle.api.ReflectiveLintRunner.runLint(ReflectiveLintRunner.kt:38)
at com.android.build.gradle.tasks.LintBaseTask.runLint(LintBaseTask.java:87)
at com.android.build.gradle.tasks.LintPerVariantTask.lint(LintPerVariantTask.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:46)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:39)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:26)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:788)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:755)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:124)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:113)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:73)
at org.gradle.api.internal.tasks.execution.OutputDirectoryCreatingTaskExecuter.execute(OutputDirectoryCreatingTaskExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:101)
at org.gradle.api.internal.tasks.execution.FinalizeInputFilePropertiesTaskExecuter.execute(FinalizeInputFilePropertiesTaskExecuter.java:44)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:59)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:256)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:199)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:110)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:249)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:238)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:123)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:79)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:104)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:98)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:663)
at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:597)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:98)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:748)
Issue Analytics
- State:
- Created 5 years ago
- Reactions:2
- Comments:8 (1 by maintainers)
Top Results From Across the Web
kotlin 1.5 causes timber lint to fail when variable in for loop ...
it works. It looks like the android linter does not get info what the currentRetry variable is and assumes it is an object....
Read more >Trying to add timber to Kotlin project results in multiple 'Unable ...
I have added implementation 'com.jakewharton.timber:timber:4.7.1' to my Kotlin project and now I get the following Gradle errors:
Read more >Lint: ClassCastException in RestrictToDetector (related to KT ...
Mentioned issues (1). P2, Strange warning from RestrictToDetector for Kotlin property initialized by constructor call. “ delif I dna) 88312721/ ...
Read more >Hi Trying to upgrade Timber to 5 0 1 and get this error No m
Hi Trying to upgrade Timber to 5 0 1 and get this error No m | Squarelibraries | Kotlinlang.
Read more >False import resolution error in TestLintTask? - Google Groups
gradlew timber-lint:test. The outlined error makes sense for 3rd-party libraries, like RecyclerView, but shouldn't the JDK or Kotlin standard libs be ...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I get a similar issue with Android gradle plugin 3.1.0 and Timber 4.7.0
ClassCastException:WrongTimberUsageDetector.isLoggingExceptionMessage(WrongTimberUsageDetector.java:552)←WrongTimberUsageDetector.chekExceptionLogging(WrongTimberUsageDetector.java:514)←WrongTimberUsageDetector.visitMethod(WrongTimberUsageDetector.java:95)←UElementVitor$DelegatingPsiVisitor.visitMethodCallExpression(UElementVisitor.kt:1027)←UElementVisitor$DelegatingPsiVisitor.visitCallExpression(UElementVisitor.kt:1007)←KotlinUFunctionCallExpression.accept(KotlinUFunctionCallExpression.kt:114)←UQualifiedReferenceExpression$Defaulmpls.accept(UQualifiedReferenceExpression.kt:48)←KotlinUQualifiedReferenceExpression.accept(KotlinUQualifiedReferenceExpression.kt:29)
Edit: I found the statement that caused the error:
Timber.e(error, error.message)
and fixed it by replacing it withTimber.e(error)
Seems to me like this is an issue within Lint / UAST. Here’s a test case that won’t even jump into the
visitMethod
method: