override fun visitClass()

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)
      }