From cf67614f8593ccf686d6ff2ae4612d20a9fa8610 Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich Date: Tue, 6 Feb 2018 16:36:03 +0300 Subject: [PATCH] InstanceofCatchParameter inspection should not report instanceof check on marker interfaces (ex: ControlFlowException) --- .../errorhandling/InstanceofCatchParameterInspection.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/InstanceofCatchParameterInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/InstanceofCatchParameterInspection.java index b10896117daa..340a4f354be6 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/InstanceofCatchParameterInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/errorhandling/InstanceofCatchParameterInspection.java @@ -16,6 +16,7 @@ package com.siyeh.ig.errorhandling; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; @@ -47,12 +48,15 @@ public class InstanceofCatchParameterInspection extends BaseInspection { extends BaseInspectionVisitor { @Override - public void visitInstanceOfExpression( - @NotNull PsiInstanceOfExpression exp) { + public void visitInstanceOfExpression(@NotNull PsiInstanceOfExpression exp) { super.visitInstanceOfExpression(exp); if (!ControlFlowUtils.isInCatchBlock(exp)) { return; } + PsiTypeElement typeElement = exp.getCheckType(); + if (typeElement == null || !InheritanceUtil.isInheritor(typeElement.getType(), CommonClassNames.JAVA_LANG_THROWABLE)) { + return; + } final PsiExpression operand = exp.getOperand(); if (!(operand instanceof PsiReferenceExpression)) { return;