in instrumentation/src/com/intellij/rt/coverage/instrumentation/filters/lines/TryWithResourcesLineFilter.java [89:128]
public void visitVarInsn(int opcode, int var) {
mv.visitVarInsn(opcode, var);
if (opcode == Opcodes.ASTORE) {
if (myState == State.INITIAL) {
myState = State.STORE_INITIAL_EXCEPTION;
myExceptionVarIndex = var;
} else if (myState == State.THROW) {
myState = State.STORE_INITIAL_EXCEPTION_2;
myExceptionVarIndex = var;
} else if (myState == State.GOTO) {
myState = State.STORE_ADDITIONAL_EXCEPTION;
} else {
setHasInstructions();
myState = State.INITIAL;
}
} else if (opcode == Opcodes.ALOAD) {
if (myExceptionVarIndex == var && myState == State.CALL_CLOSE) {
myState = State.LOAD_INITIAL_EXCEPTION_2;
} else if (myState == State.INITIAL
|| myState == State.STORE_INITIAL_EXCEPTION
|| myState == State.STORE_INITIAL_EXCEPTION_2
|| myState == State.CHECK_RESOURCE_NULL
|| myState == State.GOTO_2
|| myState == State.CALL_CLOSE) {
myState = State.LOAD_RESOURCE;
} else if (myState == State.STORE_ADDITIONAL_EXCEPTION) {
myState = State.LOAD_INITIAL_EXCEPTION;
} else if (myState == State.LOAD_INITIAL_EXCEPTION) {
myState = State.LOAD_ADDITIONAL_EXCEPTION;
} else if (myState == State.CALL_ADD_SUPPRESSED) {
myState = State.LOAD_INITIAL_EXCEPTION_2;
} else {
setHasInstructions();
myState = State.INITIAL;
}
} else {
setHasInstructions();
myState = State.INITIAL;
}
}