]> granicus.if.org Git - clang/commitdiff
[VFS] Port applyAllReplacements to InMemoryFileSystem.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 6 Oct 2015 10:23:17 +0000 (10:23 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 6 Oct 2015 10:23:17 +0000 (10:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@249388 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Tooling/Core/Replacement.cpp

index 838b8042dc1eaa417047a22f40691636b94e47f7..5bea84fd44ae72dac33f920da70f392bfbe2900a 100644 (file)
@@ -265,19 +265,18 @@ bool applyAllReplacements(const std::vector<Replacement> &Replaces,
 }
 
 std::string applyAllReplacements(StringRef Code, const Replacements &Replaces) {
-  FileManager Files((FileSystemOptions()));
+  IntrusiveRefCntPtr<vfs::InMemoryFileSystem> InMemoryFileSystem(
+      new vfs::InMemoryFileSystem);
+  FileManager Files(FileSystemOptions(), InMemoryFileSystem);
   DiagnosticsEngine Diagnostics(
       IntrusiveRefCntPtr<DiagnosticIDs>(new DiagnosticIDs),
       new DiagnosticOptions);
   SourceManager SourceMgr(Diagnostics, Files);
   Rewriter Rewrite(SourceMgr, LangOptions());
-  std::unique_ptr<llvm::MemoryBuffer> Buf =
-      llvm::MemoryBuffer::getMemBuffer(Code, "<stdin>");
-  const clang::FileEntry *Entry =
-      Files.getVirtualFile("<stdin>", Buf->getBufferSize(), 0);
-  SourceMgr.overrideFileContents(Entry, std::move(Buf));
-  FileID ID =
-      SourceMgr.createFileID(Entry, SourceLocation(), clang::SrcMgr::C_User);
+  InMemoryFileSystem->addFile(
+      "<stdin>", 0, llvm::MemoryBuffer::getMemBuffer(Code, "<stdin>"));
+  FileID ID = SourceMgr.createFileID(Files.getFile("<stdin>"), SourceLocation(),
+                                     clang::SrcMgr::C_User);
   for (Replacements::const_iterator I = Replaces.begin(), E = Replaces.end();
        I != E; ++I) {
     Replacement Replace("<stdin>", I->getOffset(), I->getLength(),