1224135Sdim//===--- ARCMTActions.cpp - ARC Migrate Tool Frontend Actions ---*- C++ -*-===// 2224135Sdim// 3224135Sdim// The LLVM Compiler Infrastructure 4224135Sdim// 5224135Sdim// This file is distributed under the University of Illinois Open Source 6224135Sdim// License. See LICENSE.TXT for details. 7224135Sdim// 8224135Sdim//===----------------------------------------------------------------------===// 9224135Sdim 10224135Sdim#include "clang/ARCMigrate/ARCMTActions.h" 11224135Sdim#include "clang/ARCMigrate/ARCMT.h" 12224135Sdim#include "clang/Frontend/CompilerInstance.h" 13224135Sdim 14224135Sdimusing namespace clang; 15224135Sdimusing namespace arcmt; 16224135Sdim 17224135Sdimbool CheckAction::BeginInvocation(CompilerInstance &CI) { 18235633Sdim if (arcmt::checkForManualIssues(CI.getInvocation(), getCurrentInput(), 19224135Sdim CI.getDiagnostics().getClient())) 20224135Sdim return false; // errors, stop the action. 21224135Sdim 22224135Sdim // We only want to see warnings reported from arcmt::checkForManualIssues. 23224135Sdim CI.getDiagnostics().setIgnoreAllWarnings(true); 24224135Sdim return true; 25224135Sdim} 26224135Sdim 27224135SdimCheckAction::CheckAction(FrontendAction *WrappedAction) 28224135Sdim : WrapperFrontendAction(WrappedAction) {} 29224135Sdim 30224135Sdimbool ModifyAction::BeginInvocation(CompilerInstance &CI) { 31235633Sdim return !arcmt::applyTransformations(CI.getInvocation(), getCurrentInput(), 32224135Sdim CI.getDiagnostics().getClient()); 33224135Sdim} 34224135Sdim 35224135SdimModifyAction::ModifyAction(FrontendAction *WrappedAction) 36224135Sdim : WrapperFrontendAction(WrappedAction) {} 37224135Sdim 38224135Sdimbool MigrateAction::BeginInvocation(CompilerInstance &CI) { 39226890Sdim if (arcmt::migrateWithTemporaryFiles(CI.getInvocation(), 40235633Sdim getCurrentInput(), 41235633Sdim CI.getDiagnostics().getClient(), 42235633Sdim MigrateDir, 43235633Sdim EmitPremigrationARCErros, 44235633Sdim PlistOut)) 45226890Sdim return false; // errors, stop the action. 46226890Sdim 47226890Sdim // We only want to see diagnostics emitted by migrateWithTemporaryFiles. 48226890Sdim CI.getDiagnostics().setIgnoreAllWarnings(true); 49226890Sdim return true; 50224135Sdim} 51224135Sdim 52224135SdimMigrateAction::MigrateAction(FrontendAction *WrappedAction, 53226890Sdim StringRef migrateDir, 54226890Sdim StringRef plistOut, 55226890Sdim bool emitPremigrationARCErrors) 56226890Sdim : WrapperFrontendAction(WrappedAction), MigrateDir(migrateDir), 57226890Sdim PlistOut(plistOut), EmitPremigrationARCErros(emitPremigrationARCErrors) { 58224135Sdim if (MigrateDir.empty()) 59224135Sdim MigrateDir = "."; // user current directory if none is given. 60224135Sdim} 61