public void visitVarInsn()

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;
    }
  }