[clangd] Make FSProvider const-correct. NFC
authorSam McCall <sam.mccall@gmail.com>
Wed, 10 Oct 2018 07:46:15 +0000 (07:46 +0000)
committerSam McCall <sam.mccall@gmail.com>
Wed, 10 Oct 2018 07:46:15 +0000 (07:46 +0000)
llvm-svn: 344118

clang-tools-extra/clangd/ClangdServer.cpp
clang-tools-extra/clangd/ClangdServer.h
clang-tools-extra/clangd/FSProvider.h
clang-tools-extra/unittests/clangd/ClangdTests.cpp
clang-tools-extra/unittests/clangd/TestFS.h

index f0b94cb..bdba66e 100644 (file)
@@ -97,8 +97,8 @@ ClangdServer::Options ClangdServer::optsForTest() {
   return Opts;
 }
 
-ClangdServer::ClangdServer(GlobalCompilationDatabase &CDB,
-                           FileSystemProvider &FSProvider,
+ClangdServer::ClangdServer(const GlobalCompilationDatabase &CDB,
+                           const FileSystemProvider &FSProvider,
                            DiagnosticsConsumer &DiagConsumer,
                            const Options &Opts)
     : CDB(CDB), DiagConsumer(DiagConsumer), FSProvider(FSProvider),
index c66ed86..9f17e73 100644 (file)
@@ -109,7 +109,8 @@ public:
   /// \p DiagConsumer. Note that a callback to \p DiagConsumer happens on a
   /// worker thread. Therefore, instances of \p DiagConsumer must properly
   /// synchronize access to shared state.
-  ClangdServer(GlobalCompilationDatabase &CDB, FileSystemProvider &FSProvider,
+  ClangdServer(const GlobalCompilationDatabase &CDB,
+               const FileSystemProvider &FSProvider,
                DiagnosticsConsumer &DiagConsumer, const Options &Opts);
 
   /// Set the root path of the workspace.
@@ -227,9 +228,9 @@ private:
 
   tooling::CompileCommand getCompileCommand(PathRef File);
 
-  GlobalCompilationDatabase &CDB;
+  const GlobalCompilationDatabase &CDB;
   DiagnosticsConsumer &DiagConsumer;
-  FileSystemProvider &FSProvider;
+  const FileSystemProvider &FSProvider;
 
   /// Used to synchronize diagnostic responses for added and removed files.
   llvm::StringMap<DocVersion> InternalVersion;
index 70dfb44..a11d381 100644 (file)
@@ -25,13 +25,13 @@ public:
   /// Context::current() will be the context passed to the clang entrypoint,
   /// such as addDocument(), and will also be propagated to result callbacks.
   /// Embedders may use this to isolate filesystem accesses.
-  virtual IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() = 0;
+  virtual IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() const = 0;
 };
 
 class RealFileSystemProvider : public FileSystemProvider {
 public:
   // FIXME: returns the single real FS instance, which is not threadsafe.
-  IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() override {
+  IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() const override {
     return vfs::getRealFileSystem();
   }
 };
index b9003a8..87741df 100644 (file)
@@ -264,11 +264,11 @@ int b = a;
 TEST_F(ClangdVFSTest, PropagatesContexts) {
   static Key<int> Secret;
   struct FSProvider : public FileSystemProvider {
-    IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() override {
+    IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() const override {
       Got = Context::current().getExisting(Secret);
       return buildTestFS({});
     }
-    int Got;
+    mutable int Got;
   } FS;
   struct DiagConsumer : public DiagnosticsConsumer {
     void onDiagnosticsReady(PathRef File,
@@ -973,7 +973,7 @@ TEST(ClangdTests, PreambleVFSStatCache) {
     ListenStatsFSProvider(llvm::StringMap<unsigned> &CountStats)
         : CountStats(CountStats) {}
 
-    IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() override {
+    IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() const override {
       class ListenStatVFS : public vfs::ProxyFileSystem {
       public:
         ListenStatVFS(IntrusiveRefCntPtr<vfs::FileSystem> FS,
index a0efb75..39c0bb2 100644 (file)
@@ -29,7 +29,7 @@ buildTestFS(llvm::StringMap<std::string> const &Files,
 // A VFS provider that returns TestFSes containing a provided set of files.
 class MockFSProvider : public FileSystemProvider {
 public:
-  IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() override {
+  IntrusiveRefCntPtr<vfs::FileSystem> getFileSystem() const override {
     return buildTestFS(Files);
   }