
Summary: This commit restores r303067(reverted by r303094) and fixes the 'formatting.test' failure. The failure is due to destructors of `ClangdLSPServer`'s fields(`FixItsMap` and `FixItsMutex`) being called before destructor of `Server`. It led to the worker thread calling `consumeDiagnostics` after `FixItsMutex` and `FixItsMap` destructors were called. Also, clangd is now run with '-run-synchronously' flag in 'formatting.test'. Reviewers: bkramer, krasimir Reviewed By: krasimir Subscribers: mgorny, cfe-commits, klimek Differential Revision: https://reviews.llvm.org/D33233 llvm-svn: 303151
49 lines
1.2 KiB
C++
49 lines
1.2 KiB
C++
//===--- DraftStore.cpp - File contents container ---------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "DraftStore.h"
|
|
|
|
using namespace clang::clangd;
|
|
|
|
VersionedDraft DraftStore::getDraft(PathRef File) const {
|
|
std::lock_guard<std::mutex> Lock(Mutex);
|
|
|
|
auto It = Drafts.find(File);
|
|
if (It == Drafts.end())
|
|
return {0, llvm::None};
|
|
return It->second;
|
|
}
|
|
|
|
DocVersion DraftStore::getVersion(PathRef File) const {
|
|
std::lock_guard<std::mutex> Lock(Mutex);
|
|
|
|
auto It = Drafts.find(File);
|
|
if (It == Drafts.end())
|
|
return 0;
|
|
return It->second.Version;
|
|
}
|
|
|
|
DocVersion DraftStore::updateDraft(PathRef File, StringRef Contents) {
|
|
std::lock_guard<std::mutex> Lock(Mutex);
|
|
|
|
auto &Entry = Drafts[File];
|
|
DocVersion NewVersion = ++Entry.Version;
|
|
Entry.Draft = Contents;
|
|
return NewVersion;
|
|
}
|
|
|
|
DocVersion DraftStore::removeDraft(PathRef File) {
|
|
std::lock_guard<std::mutex> Lock(Mutex);
|
|
|
|
auto &Entry = Drafts[File];
|
|
DocVersion NewVersion = ++Entry.Version;
|
|
Entry.Draft = llvm::None;
|
|
return NewVersion;
|
|
}
|