From 8d172ac52a8c52ebf3c6feab7e830ab207b5b96b Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Tue, 11 Mar 2014 11:22:21 +0100 Subject: [PATCH] IDEA-121952 (Java 1.8: "Interface may be annotated with @FunctionalInterface" inspection reports already annotated interfaces) --- .../InterfaceMayBeAnnotatedFunctionalInspection.java | 3 ++- .../InterfaceMayBeAnnotatedFunctionalInspectionTest.java | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) 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 58fd9e3553aa..7c0c2a377803 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspection.java @@ -15,6 +15,7 @@ */ package com.siyeh.ig.classlayout; +import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.intention.AddAnnotationPsiFix; import com.intellij.psi.LambdaHighlightingUtil; import com.intellij.psi.LambdaUtil; @@ -71,7 +72,7 @@ public class InterfaceMayBeAnnotatedFunctionalInspection extends BaseInspection return; } super.visitClass(aClass); - if (!aClass.isInterface()) { + if (!aClass.isInterface() || AnnotationUtil.isAnnotated(aClass, "java.lang.FunctionalInterface", false)) { return; } if (LambdaHighlightingUtil.checkInterfaceFunctional(aClass) != null) { diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspectionTest.java index 3d41d4123d97..e367b530d8ea 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/classlayout/InterfaceMayBeAnnotatedFunctionalInspectionTest.java @@ -44,6 +44,12 @@ public class InterfaceMayBeAnnotatedFunctionalInspectionTest extends LightInspec "}"); } + public void testAlreadyAnnotated() { + doTest("@FunctionalInterface interface Asd {" + + " boolean doSmth();" + + "}"); + } + public void testAnnotationType() { doTest("@interface A {}"); }