diff options
| author | Ted Kremenek <kremenek@apple.com> | 2012-03-06 20:06:33 +0000 |
|---|---|---|
| committer | Ted Kremenek <kremenek@apple.com> | 2012-03-06 20:06:33 +0000 |
| commit | f7639e1b4a6c8cbf69c0005c6173ac863735b572 (patch) | |
| tree | ec10ddb85eb9803b67b1053bcac26e0050810ff3 /clang/tools/libclang | |
| parent | d151dde0e6673a15e9bf0b5f328df461dfd8cae9 (diff) | |
| download | bcm5719-llvm-f7639e1b4a6c8cbf69c0005c6173ac863735b572.tar.gz bcm5719-llvm-f7639e1b4a6c8cbf69c0005c6173ac863735b572.zip | |
Add new code migrator support for migrating existing Objective-C code to use
the new Objective-C NSArray/NSDictionary/NSNumber literal syntax.
This introduces a new library, libEdit, which provides a new way to support
migration of code that improves on the original ARC migrator. We now believe
that most of its functionality can be refactored into the existing libraries,
and thus this new library may shortly disappear.
llvm-svn: 152141
Diffstat (limited to 'clang/tools/libclang')
| -rw-r--r-- | clang/tools/libclang/ARCMigrate.cpp | 41 | ||||
| -rw-r--r-- | clang/tools/libclang/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | clang/tools/libclang/Makefile | 3 | ||||
| -rw-r--r-- | clang/tools/libclang/libclang.exports | 1 |
4 files changed, 45 insertions, 1 deletions
diff --git a/clang/tools/libclang/ARCMigrate.cpp b/clang/tools/libclang/ARCMigrate.cpp index 58f8ba454db..5ee5cf6e4ef 100644 --- a/clang/tools/libclang/ARCMigrate.cpp +++ b/clang/tools/libclang/ARCMigrate.cpp @@ -74,6 +74,47 @@ CXRemapping clang_getRemappings(const char *migrate_dir_path) { return remap.take(); } +CXRemapping clang_getRemappingsFromFileList(const char **filePaths, + unsigned numFiles) { + bool Logging = ::getenv("LIBCLANG_LOGGING"); + + OwningPtr<Remap> remap(new Remap()); + + if (numFiles == 0) { + if (Logging) + llvm::errs() << "clang_getRemappingsFromFileList was called with " + "numFiles=0\n"; + return remap.take(); + } + + if (!filePaths) { + if (Logging) + llvm::errs() << "clang_getRemappingsFromFileList was called with " + "NULL filePaths\n"; + return 0; + } + + TextDiagnosticBuffer diagBuffer; + SmallVector<StringRef, 32> Files; + for (unsigned i = 0; i != numFiles; ++i) + Files.push_back(filePaths[i]); + + bool err = arcmt::getFileRemappingsFromFileList(remap->Vec, Files, + &diagBuffer); + + if (err) { + if (Logging) { + llvm::errs() << "Error by clang_getRemappingsFromFileList\n"; + for (TextDiagnosticBuffer::const_iterator + I = diagBuffer.err_begin(), E = diagBuffer.err_end(); I != E; ++I) + llvm::errs() << I->second << '\n'; + } + return remap.take(); + } + + return remap.take(); +} + unsigned clang_remap_getNumFiles(CXRemapping map) { return static_cast<Remap *>(map)->Vec.size(); diff --git a/clang/tools/libclang/CMakeLists.txt b/clang/tools/libclang/CMakeLists.txt index 742448d2ea0..66a1710bac1 100644 --- a/clang/tools/libclang/CMakeLists.txt +++ b/clang/tools/libclang/CMakeLists.txt @@ -6,6 +6,7 @@ set(LLVM_USED_LIBS clangSerialization clangIndex clangSema + clangEdit clangAST clangLex clangBasic) diff --git a/clang/tools/libclang/Makefile b/clang/tools/libclang/Makefile index 375f7f20fe0..1fff166bbf8 100644 --- a/clang/tools/libclang/Makefile +++ b/clang/tools/libclang/Makefile @@ -18,7 +18,8 @@ SHARED_LIBRARY = 1 LINK_COMPONENTS := support mc USEDLIBS = clangARCMigrate.a clangRewrite.a clangFrontend.a clangDriver.a \ clangSerialization.a \ - clangParse.a clangSema.a clangAnalysis.a clangAST.a clangLex.a clangBasic.a + clangParse.a clangSema.a clangEdit.a clangAnalysis.a \ + clangAST.a clangLex.a clangBasic.a include $(CLANG_LEVEL)/Makefile diff --git a/clang/tools/libclang/libclang.exports b/clang/tools/libclang/libclang.exports index 8645b15f7b2..1900ac86c05 100644 --- a/clang/tools/libclang/libclang.exports +++ b/clang/tools/libclang/libclang.exports @@ -132,6 +132,7 @@ clang_getRange clang_getRangeEnd clang_getRangeStart clang_getRemappings +clang_getRemappingsFromFileList clang_getResultType clang_getSpecializedCursorTemplate clang_getSpellingLocation |

