diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java index 0534970..8d09294 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/TryStatement.java @@ -298,6 +298,8 @@ public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, Fl tryInfo = this.tryBlock.analyseCode(currentScope, handlingContext, flowInfo.copy()); if ((tryInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) != 0) this.bits |= ASTNode.IsTryBlockExiting; + // reset: + this.tryBlock.scope.finallyInfo = null; } if (resourcesLength > 0) { this.postTryInitStateIndex = currentScope.methodScope().recordInitializationStates(tryInfo); @@ -356,6 +358,8 @@ public FlowInfo analyseCode(BlockScope currentScope, FlowContext flowContext, Fl this.catchExitInitStateIndexes[i] = currentScope.methodScope().recordInitializationStates(catchInfo); this.catchExits[i] = (catchInfo.tagBits & FlowInfo.UNREACHABLE_OR_DEAD) != 0; + // reset: + this.catchBlocks[i].scope.finallyInfo = null; tryInfo = tryInfo.mergedWith(catchInfo.unconditionalInits()); } }