in recipes/src/main/java/com/uber/lintchecks/recipes/guardrails/JavaOnlyDetector.kt [129:148]
override fun visitLambdaExpression(node: ULambdaExpression) {
if (node.isReturnExpression() && node.isEnclosedInJavaOnlyMethod()) {
return
}
node.functionalInterfaceType?.let { type ->
if (type is PsiClassType) {
type.resolve()?.let { psiClass ->
context.evaluator.findAnnotation(psiClass, JAVA_ONLY)?.let {
val message = anonymousTypeString(psiClass, "lambda")
context.report(ISSUE, context.getLocation(node.sourcePsi!!), message)
return
}
val functionalMethod = psiClass.methods.first()
functionalMethod.toUElementOfType<UMethod>()?.isAnnotationPresent()?.let {
node.report(it, "expressed as a lambda in Kotlin")
}
}
}
}
}