summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/ARCMTActions.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-07-09 20:00:58 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-07-09 20:00:58 +0000
commit7fbd97f641aac5aa047b16fb075e30826023ca09 (patch)
tree65b1cd86783449c9f4a54182688b1b2209342e51 /clang/lib/ARCMigrate/ARCMTActions.cpp
parent25659e93c755bdb6832ca58e7d4b698df9f2e10f (diff)
downloadbcm5719-llvm-7fbd97f641aac5aa047b16fb075e30826023ca09.tar.gz
bcm5719-llvm-7fbd97f641aac5aa047b16fb075e30826023ca09.zip
[arcmt] Introduce new '-ccc-arcmt-migrate <path>' ARC migration driver option.
This is a new mode of migration, where we avoid modifying the original files but we emit temporary files instead. <path> will be used to keep migration process metadata. Currently the temporary files that are produced are put in the system's temp directory but we can put them in the <path> if is necessary. Also introduce new ARC migration functions in libclang whose only purpose, currently, is to accept <path> and provide pairs of original file/transformed file to map from the originals to the files after transformations are applied. Finally introduce the c-arcmt-test utility that exercises the new libclang functions, update arcmt-test, and add tests for the whole process. rdar://9735086. llvm-svn: 134844
Diffstat (limited to 'clang/lib/ARCMigrate/ARCMTActions.cpp')
-rw-r--r--clang/lib/ARCMigrate/ARCMTActions.cpp25
1 files changed, 20 insertions, 5 deletions
diff --git a/clang/lib/ARCMigrate/ARCMTActions.cpp b/clang/lib/ARCMigrate/ARCMTActions.cpp
index 7de62d289ce..345c7452420 100644
--- a/clang/lib/ARCMigrate/ARCMTActions.cpp
+++ b/clang/lib/ARCMigrate/ARCMTActions.cpp
@@ -28,11 +28,26 @@ bool CheckAction::BeginInvocation(CompilerInstance &CI) {
CheckAction::CheckAction(FrontendAction *WrappedAction)
: WrapperFrontendAction(WrappedAction) {}
-bool TransformationAction::BeginInvocation(CompilerInstance &CI) {
- return !arcmt::applyTransformations(CI.getInvocation(), getCurrentFile(),
- getCurrentFileKind(),
- CI.getDiagnostics().getClient());
+bool ModifyAction::BeginInvocation(CompilerInstance &CI) {
+ return !arcmt::applyTransformations(CI.getInvocation(),
+ getCurrentFile(), getCurrentFileKind(),
+ CI.getDiagnostics().getClient());
}
-TransformationAction::TransformationAction(FrontendAction *WrappedAction)
+ModifyAction::ModifyAction(FrontendAction *WrappedAction)
: WrapperFrontendAction(WrappedAction) {}
+
+bool MigrateAction::BeginInvocation(CompilerInstance &CI) {
+ return !arcmt::migrateWithTemporaryFiles(CI.getInvocation(),
+ getCurrentFile(),
+ getCurrentFileKind(),
+ CI.getDiagnostics().getClient(),
+ MigrateDir);
+}
+
+MigrateAction::MigrateAction(FrontendAction *WrappedAction,
+ llvm::StringRef migrateDir)
+ : WrapperFrontendAction(WrappedAction), MigrateDir(migrateDir) {
+ if (MigrateDir.empty())
+ MigrateDir = "."; // user current directory if none is given.
+}
OpenPOWER on IntegriCloud