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

lib/Index/SimpleFormatContext.h

index b884214989597b7c613a756d08afad39ba347405..2c26e4d82e081cba3d2fa2937256c5e41fca2bab 100644 (file)
@@ -38,18 +38,17 @@ public:
       : DiagOpts(new DiagnosticOptions()),
         Diagnostics(new DiagnosticsEngine(new DiagnosticIDs,
                                           DiagOpts.get())),
-        Files((FileSystemOptions())),
+        InMemoryFileSystem(new vfs::InMemoryFileSystem),
+        Files(FileSystemOptions(), InMemoryFileSystem),
         Sources(*Diagnostics, Files),
         Rewrite(Sources, Options) {
     Diagnostics->setClient(new IgnoringDiagConsumer, true);
   }
 
   FileID createInMemoryFile(StringRef Name, StringRef Content) {
-    std::unique_ptr<llvm::MemoryBuffer> Source =
-        llvm::MemoryBuffer::getMemBuffer(Content);
-    const FileEntry *Entry =
-        Files.getVirtualFile(Name, Source->getBufferSize(), 0);
-    Sources.overrideFileContents(Entry, std::move(Source));
+    InMemoryFileSystem->addFile(Name, 0,
+                                llvm::MemoryBuffer::getMemBuffer(Content));
+    const FileEntry *Entry = Files.getFile(Name);
     assert(Entry != nullptr);
     return Sources.createFileID(Entry, SourceLocation(), SrcMgr::C_User);
   }
@@ -64,6 +63,7 @@ public:
 
   IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts;
   IntrusiveRefCntPtr<DiagnosticsEngine> Diagnostics;
+  IntrusiveRefCntPtr<vfs::InMemoryFileSystem> InMemoryFileSystem;
   FileManager Files;
   SourceManager Sources;
   Rewriter Rewrite;