text: extern "C" {
  extern int printf(const char *, ...);
  }
  
  int sub_assign(int a, int b) {
    int res = a;
    res -= b;
    return res;
  }
  
  int main() {
    if (sub_assign(3, 2) == 1) {
      printf("NORMAL\n");
      return 0;
    } else {
      printf("MUTATED\n");
      return 1;
    }
  }
  
  // clang-format off
  
  /**
  RUN: %CLANG_EXEC -fplugin=%mull_frontend_cxx -Xclang -plugin-arg-mull-cxx-frontend -Xclang mutators=cxx_sub_assign_to_add_assign %s -o %s.exe
  
  RUN: %s.exe | %FILECHECK_EXEC %s --dump-input=fail --strict-whitespace --match-full-lines --check-prefix=STANDALONE_WITHOUT_MUTATION
  RUN: (env "cxx_sub_assign_to_add_assign:%s:7:7"=1 %s.exe || true) | %FILECHECK_EXEC %s --dump-input=fail --strict-whitespace --match-full-lines --check-prefix=STANDALONE_WITH_MUTATION
  
  STANDALONE_WITHOUT_MUTATION:NORMAL
  STANDALONE_WITH_MUTATION:MUTATED
  
  RUN: %mull_runner %s.exe -ide-reporter-show-killed | %FILECHECK_EXEC %s --dump-input=fail --strict-whitespace --match-full-lines --check-prefix=MULL_RUNNER
  
  MULL_RUNNER:[info] Killed mutants (1/1):
  MULL_RUNNER:{{.*}}sample.cpp:7:7: warning: Killed: Replaced -= with += [cxx_sub_assign_to_add_assign]
  */
  