diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-11-11 09:38:35 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-11-11 09:38:35 +0000 |
commit | bd9f04b68bc7001ee874360f0187acc12719f84e (patch) | |
tree | fc161437e9544fdf2853a49da18a512a609d6759 | |
parent | aea364195b81f933515e8968b5254a1195eb0337 (diff) |
clang-cc: Refactor some -fixit-at handling.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@86824 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | tools/clang-cc/clang-cc.cpp | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp index e0ca9cf290..b9edc0cacd 100644 --- a/tools/clang-cc/clang-cc.cpp +++ b/tools/clang-cc/clang-cc.cpp @@ -74,23 +74,6 @@ using namespace clang; //===----------------------------------------------------------------------===// -// Source Location Parser -//===----------------------------------------------------------------------===// - -static bool ResolveParsedLocation(ParsedSourceLocation &ParsedLoc, - FileManager &FileMgr, - RequestedSourceLocation &Result) { - const FileEntry *File = FileMgr.getFile(ParsedLoc.FileName); - if (!File) - return true; - - Result.File = File; - Result.Line = ParsedLoc.Line; - Result.Column = ParsedLoc.Column; - return false; -} - -//===----------------------------------------------------------------------===// // Global options. //===----------------------------------------------------------------------===// @@ -580,6 +563,29 @@ static llvm::raw_ostream *ComputeOutFile(const CompilerInvocation &CompOpts, return Ret; } +/// AddFixitLocations - Add any individual user specified "fix-it" locations, +/// and return true on success (if any were added). +static bool AddFixitLocations(FixItRewriter *FixItRewrite, + FileManager &FileMgr) { + bool AddedFixitLocation = false; + + for (unsigned i = 0, e = FixItAtLocations.size(); i != e; ++i) { + if (const FileEntry *File = FileMgr.getFile(FixItAtLocations[i].FileName)) { + RequestedSourceLocation Requested; + Requested.File = File; + Requested.Line = FixItAtLocations[i].Line; + Requested.Column = FixItAtLocations[i].Column; + FixItRewrite->addFixItLocation(Requested); + AddedFixitLocation = true; + } else { + llvm::errs() << "FIX-IT could not find file \"" + << FixItAtLocations[i].FileName << "\"\n"; + } + } + + return AddedFixitLocation; +} + static ASTConsumer *CreateConsumerAction(const CompilerInvocation &CompOpts, Preprocessor &PP, const std::string &InFile, @@ -795,21 +801,7 @@ static void ProcessInputFile(const CompilerInvocation &CompOpts, PP.getSourceManager(), PP.getLangOptions()); - bool AddedFixitLocation = false; - for (unsigned Idx = 0, Last = FixItAtLocations.size(); - Idx != Last; ++Idx) { - RequestedSourceLocation Requested; - if (ResolveParsedLocation(FixItAtLocations[Idx], - PP.getFileManager(), Requested)) { - fprintf(stderr, "FIX-IT could not find file \"%s\"\n", - FixItAtLocations[Idx].FileName.c_str()); - } else { - FixItRewrite->addFixItLocation(Requested); - AddedFixitLocation = true; - } - } - - if (!AddedFixitLocation) { + if (!AddFixitLocations(FixItRewrite, PP.getFileManager())) { // All of the fix-it locations were bad. Don't fix anything. delete FixItRewrite; FixItRewrite = 0; |