ARCMTActions.cpp revision 224145
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
10#include "clang/ARCMigrate/ARCMTActions.h"
11#include "clang/ARCMigrate/ARCMT.h"
12#include "clang/Frontend/CompilerInstance.h"
13
14using namespace clang;
15using namespace arcmt;
16
17bool CheckAction::BeginInvocation(CompilerInstance &CI) {
18  if (arcmt::checkForManualIssues(CI.getInvocation(), getCurrentFile(),
19                                  getCurrentFileKind(),
20                                  CI.getDiagnostics().getClient()))
21    return false; // errors, stop the action.
22
23  // We only want to see warnings reported from arcmt::checkForManualIssues.
24  CI.getDiagnostics().setIgnoreAllWarnings(true);
25  return true;
26}
27
28CheckAction::CheckAction(FrontendAction *WrappedAction)
29  : WrapperFrontendAction(WrappedAction) {}
30
31bool ModifyAction::BeginInvocation(CompilerInstance &CI) {
32  return !arcmt::applyTransformations(CI.getInvocation(),
33                                      getCurrentFile(), getCurrentFileKind(),
34                                      CI.getDiagnostics().getClient());
35}
36
37ModifyAction::ModifyAction(FrontendAction *WrappedAction)
38  : WrapperFrontendAction(WrappedAction) {}
39
40bool MigrateAction::BeginInvocation(CompilerInstance &CI) {
41  return !arcmt::migrateWithTemporaryFiles(CI.getInvocation(),
42                                           getCurrentFile(),
43                                           getCurrentFileKind(),
44                                           CI.getDiagnostics().getClient(),
45                                           MigrateDir);
46}
47
48MigrateAction::MigrateAction(FrontendAction *WrappedAction,
49                             llvm::StringRef migrateDir)
50  : WrapperFrontendAction(WrappedAction), MigrateDir(migrateDir) {
51  if (MigrateDir.empty())
52    MigrateDir = "."; // user current directory if none is given.
53}
54