ARCMTActions.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //===--- ARCMTActions.cpp - ARC Migrate Tool Frontend Actions ---*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #include "clang/ARCMigrate/ARCMTActions.h"
  10. #include "clang/ARCMigrate/ARCMT.h"
  11. #include "clang/Frontend/CompilerInstance.h"
  12. using namespace clang;
  13. using namespace arcmt;
  14. bool CheckAction::BeginInvocation(CompilerInstance &CI) {
  15. if (arcmt::checkForManualIssues(CI.getInvocation(), getCurrentInput(),
  16. CI.getPCHContainerOperations(),
  17. CI.getDiagnostics().getClient()))
  18. return false; // errors, stop the action.
  19. // We only want to see warnings reported from arcmt::checkForManualIssues.
  20. CI.getDiagnostics().setIgnoreAllWarnings(true);
  21. return true;
  22. }
  23. CheckAction::CheckAction(FrontendAction *WrappedAction)
  24. : WrapperFrontendAction(WrappedAction) {}
  25. bool ModifyAction::BeginInvocation(CompilerInstance &CI) {
  26. return !arcmt::applyTransformations(CI.getInvocation(), getCurrentInput(),
  27. CI.getPCHContainerOperations(),
  28. CI.getDiagnostics().getClient());
  29. }
  30. ModifyAction::ModifyAction(FrontendAction *WrappedAction)
  31. : WrapperFrontendAction(WrappedAction) {}
  32. bool MigrateAction::BeginInvocation(CompilerInstance &CI) {
  33. if (arcmt::migrateWithTemporaryFiles(
  34. CI.getInvocation(), getCurrentInput(), CI.getPCHContainerOperations(),
  35. CI.getDiagnostics().getClient(), MigrateDir, EmitPremigrationARCErros,
  36. PlistOut))
  37. return false; // errors, stop the action.
  38. // We only want to see diagnostics emitted by migrateWithTemporaryFiles.
  39. CI.getDiagnostics().setIgnoreAllWarnings(true);
  40. return true;
  41. }
  42. MigrateAction::MigrateAction(FrontendAction *WrappedAction,
  43. StringRef migrateDir,
  44. StringRef plistOut,
  45. bool emitPremigrationARCErrors)
  46. : WrapperFrontendAction(WrappedAction), MigrateDir(migrateDir),
  47. PlistOut(plistOut), EmitPremigrationARCErros(emitPremigrationARCErrors) {
  48. if (MigrateDir.empty())
  49. MigrateDir = "."; // user current directory if none is given.
  50. }