in recipes/src/main/java/com/uber/lintchecks/recipes/guardrails/JavaOnlyDetector.kt [76:103]
override fun visitClass(node: UClass) {
val hasJavaOnly = context.evaluator.findAnnotation(node, JAVA_ONLY) != null
val hasKotlinOnly = context.evaluator.findAnnotation(node, KOTLIN_ONLY) != null
if (hasJavaOnly && hasKotlinOnly) {
context.report(ISSUE, context.getLocation(node.sourcePsi!!),
"Cannot annotate types with both @KotlinOnly and @JavaOnly")
return
}
if (hasJavaOnly || hasKotlinOnly) {
return
}
if (node is UAnonymousClass) {
if (node.uastParent.isReturnExpression() && node.isEnclosedInJavaOnlyMethod()) {
return
}
node.baseClassType.resolve()?.let { psiClass ->
context.evaluator.findAnnotation(psiClass, JAVA_ONLY)?.run {
val message = anonymousTypeString(psiClass, "anonymous")
context.report(ISSUE, context.getLocation(node.sourcePsi!!), message)
}
}
return
}
val reportData = checkMissingSubclass(node, KOTLIN_ONLY, "KotlinOnly")
?: checkMissingSubclass(node, JAVA_ONLY, "JavaOnly") ?: return
context.report(ISSUE, context.getLocation(node.sourcePsi!!), reportData.first,
reportData.second)
}