diff options
4 files changed, 14 insertions, 5 deletions
diff --git a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp index 19be2413cf9..0af322602bd 100644 --- a/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp +++ b/clang-tools-extra/cpp11-migrate/LoopConvert/LoopConvert.cpp @@ -69,7 +69,7 @@ int LoopConvertTransform::apply(const FileContentsByPath &InputStates, return result; } - RewriterContainer Rewrite(LoopTool.getFiles()); + RewriterContainer Rewrite(LoopTool.getFiles(), InputStates); // FIXME: Do something if some replacements didn't get applied? LoopTool.applyAllReplacements(Rewrite.getRewriter()); diff --git a/clang-tools-extra/cpp11-migrate/Transform.h b/clang-tools-extra/cpp11-migrate/Transform.h index 3aae93fac69..3de989c2593 100644 --- a/clang-tools-extra/cpp11-migrate/Transform.h +++ b/clang-tools-extra/cpp11-migrate/Transform.h @@ -71,14 +71,24 @@ void collectResults(clang::Rewriter &Rewrite, FileContentsByPath &Results); /// of being recreated for every Transform subclass, especially diagnostics. class RewriterContainer { public: - RewriterContainer(clang::FileManager &Files) + RewriterContainer(clang::FileManager &Files, + const FileContentsByPath &InputStates) : DiagOpts(new clang::DiagnosticOptions()), DiagnosticPrinter(llvm::errs(), DiagOpts.getPtr()), Diagnostics(llvm::IntrusiveRefCntPtr<clang::DiagnosticIDs>( new clang::DiagnosticIDs()), DiagOpts.getPtr(), &DiagnosticPrinter, false), Sources(Diagnostics, Files), - Rewrite(Sources, DefaultLangOptions) {} + Rewrite(Sources, DefaultLangOptions) { + + // Overwrite source manager's file contents with data from InputStates + for (FileContentsByPath::const_iterator I = InputStates.begin(), + E = InputStates.end(); + I != E; ++I) { + Sources.overrideFileContents(Files.getFile(I->first), + llvm::MemoryBuffer::getMemBuffer(I->second)); + } + } clang::Rewriter &getRewriter() { return Rewrite; } diff --git a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp index aaf5bf1a3f0..d4ade1cf79a 100644 --- a/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp +++ b/clang-tools-extra/cpp11-migrate/UseNullptr/UseNullptr.cpp @@ -53,7 +53,7 @@ int UseNullptrTransform::apply(const FileContentsByPath &InputStates, return result; } - RewriterContainer Rewrite(UseNullptrTool.getFiles()); + RewriterContainer Rewrite(UseNullptrTool.getFiles(), InputStates); // FIXME: Do something if some replacements didn't get applied? UseNullptrTool.applyAllReplacements(Rewrite.getRewriter()); diff --git a/clang-tools-extra/test/cpp11-migrate/Combined/combined.cpp b/clang-tools-extra/test/cpp11-migrate/Combined/combined.cpp index 48f3be8b1aa..cd3e174c2c9 100644 --- a/clang-tools-extra/test/cpp11-migrate/Combined/combined.cpp +++ b/clang-tools-extra/test/cpp11-migrate/Combined/combined.cpp @@ -4,7 +4,6 @@ // RUN: FileCheck -input-file=%t.cpp %s // RUN: cpp11-migrate -loop-convert -use-nullptr -risk=risky %t_risky.cpp -- // RUN: FileCheck -check-prefix=RISKY -input-file=%t_risky.cpp %s -// XFAIL: * #define NULL 0 |