diff --git a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java index b09e65ac6916..16ff7c4569fe 100644 --- a/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/LambdaUtil.java @@ -250,7 +250,7 @@ public class LambdaUtil { } @Nullable - static List findFunctionCandidates(PsiClass psiClass) { + public static List findFunctionCandidates(PsiClass psiClass) { if (psiClass instanceof PsiAnonymousClass) { psiClass = PsiUtil.resolveClassInType(((PsiAnonymousClass)psiClass).getBaseClassType()); } diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java index 13b134dcceb9..58fd9e3553aa 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java @@ -20,6 +20,7 @@ import com.intellij.psi.LambdaHighlightingUtil; import com.intellij.psi.LambdaUtil; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiNameValuePair; +import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.PsiUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; @@ -30,6 +31,8 @@ import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + /** * @author Bas Leijdekkers */ @@ -74,6 +77,14 @@ public class InterfaceMayBeAnnotatedFunctionalInspection extends BaseInspection if (LambdaHighlightingUtil.checkInterfaceFunctional(aClass) != null) { return; } + final List candidates = LambdaUtil.findFunctionCandidates(aClass); + if (candidates == null || candidates.size() != 1) { + return; + } + final MethodSignature signature = candidates.get(0); + if (signature.getTypeParameters().length > 0) { + return; + } registerClassError(aClass, aClass); } }