diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java index bf185ea030ce..e979a678c4d8 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspection.java @@ -175,6 +175,9 @@ public class OverlyStrongTypeCastInspection extends BaseInspection { if (castTypeElement == null) { return; } + if (operand instanceof PsiFunctionalExpression && !LambdaUtil.isFunctionalType(expectedType)) { + return; + } registerError(castTypeElement, expectedType); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/overly_strong_type_cast/OverlyStrongTypeCast.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/overly_strong_type_cast/OverlyStrongTypeCast.java index bb67aa939be7..255af72562f2 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/overly_strong_type_cast/OverlyStrongTypeCast.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/abstraction/overly_strong_type_cast/OverlyStrongTypeCast.java @@ -65,3 +65,9 @@ class SubClass2 extends SubClass{ super.doSmth(); } } + +class SAM { + { + Object runnable = (Runnable) () -> {}; + } +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspectionTest.java b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspectionTest.java index 2912c294528d..e2b54f8c6a1d 100644 --- a/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspectionTest.java +++ b/plugins/InspectionGadgets/testsrc/com/siyeh/ig/abstraction/OverlyStrongTypeCastInspectionTest.java @@ -1,5 +1,6 @@ package com.siyeh.ig.abstraction; +import com.intellij.codeInspection.ex.LocalInspectionToolWrapper; import com.siyeh.ig.IGInspectionTestCase; public class OverlyStrongTypeCastInspectionTest extends IGInspectionTestCase { @@ -7,6 +8,6 @@ public class OverlyStrongTypeCastInspectionTest extends IGInspectionTestCase { public void test() throws Exception { final OverlyStrongTypeCastInspection tool = new OverlyStrongTypeCastInspection(); tool.ignoreInMatchingInstanceof = true; - doTest("com/siyeh/igtest/abstraction/overly_strong_type_cast", tool); + doTest("com/siyeh/igtest/abstraction/overly_strong_type_cast", new LocalInspectionToolWrapper(tool), "java 1.8"); } } \ No newline at end of file