From 7fbd97f641aac5aa047b16fb075e30826023ca09 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Sat, 9 Jul 2011 20:00:58 +0000 Subject: [arcmt] Introduce new '-ccc-arcmt-migrate ' ARC migration driver option. This is a new mode of migration, where we avoid modifying the original files but we emit temporary files instead. 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 if is necessary. Also introduce new ARC migration functions in libclang whose only purpose, currently, is to accept 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 --- clang/lib/ARCMigrate/ARCMTActions.cpp | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) (limited to 'clang/lib/ARCMigrate/ARCMTActions.cpp') 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. +} -- cgit v1.2.3