diff --git a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java index b7df025fe7fe..ab2778fe701d 100644 --- a/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java +++ b/java/java-psi-impl/src/com/intellij/psi/controlFlow/ControlFlowAnalyzer.java @@ -609,8 +609,12 @@ class ControlFlowAnalyzer extends JavaElementVisitor { for (PsiParameter catchParameter : myCatchParameters) { ProgressManager.checkCanceled(); PsiType type = catchParameter.getType(); - if (type instanceof PsiClassType) { - generateThrow((PsiClassType)type, statement); + List types = + type instanceof PsiDisjunctionType ? ((PsiDisjunctionType)type).getDisjunctions() : Collections.singletonList(type); + for (PsiType subType : types) { + if (subType instanceof PsiClassType) { + generateThrow((PsiClassType)subType, statement); + } } } finishElement(statement); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java index 315b276ae4d7..355613de2400 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/advHighlighting7/MultiCatch.java @@ -85,4 +85,21 @@ class D { System.out.println(e); } } +} +class AssignFinal { + private final String value; + + public AssignFinal() { + try { + value = create(); + } catch (ClassNotFoundException | IllegalAccessException e) { + value = ""; + } + } + + public String getValue() { + return value; + } + + public static native T create() throws ClassNotFoundException, IllegalAccessException; } \ No newline at end of file diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java index 1f6e1935dc72..f00ccb04be96 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/style/field_final/FieldMayBeFinal.java @@ -1133,4 +1133,21 @@ class Implicit { public void update(String newValue) { triggeringPolicyUpdater.set(this, newValue); } +} +class TryCatchFinal { + private String value; + + public TryCatchFinal() { + try { + value = create(); + } catch (ClassNotFoundException | IllegalAccessException e) { + value = ""; + } + } + + public String getValue() { + return value; + } + + public static native T create() throws ClassNotFoundException, IllegalAccessException; } \ No newline at end of file