[clangd] Use 'std::string' for VFSTag instead of 'int'

Reviewers: krasimir

Reviewed By: krasimir

Subscribers: klimek, cfe-commits

Tags: #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D34106

llvm-svn: 305279
This commit is contained in:
Ilya Biryukov 2017-06-13 08:24:48 +00:00
parent dea7590a04
commit e36035b121
2 changed files with 7 additions and 5 deletions

View File

@ -43,20 +43,22 @@ size_t positionToOffset(StringRef Code, Position P);
Position offsetToPosition(StringRef Code, size_t Offset);
/// A tag supplied by the FileSytemProvider.
typedef int VFSTag;
typedef std::string VFSTag;
/// A value of an arbitrary type and VFSTag that was supplied by the
/// FileSystemProvider when this value was computed.
template <class T> class Tagged {
public:
template <class U>
Tagged(U &&Value, VFSTag Tag) : Value(std::forward<U>(Value)), Tag(Tag) {}
Tagged(U &&Value, VFSTag Tag)
: Value(std::forward<U>(Value)), Tag(std::move(Tag)) {}
template <class U>
Tagged(const Tagged<U> &Other) : Value(Other.Value), Tag(Other.Tag) {}
template <class U>
Tagged(Tagged<U> &&Other) : Value(std::move(Other.Value)), Tag(Other.Tag) {}
Tagged(Tagged<U> &&Other)
: Value(std::move(Other.Value)), Tag(std::move(Other.Tag)) {}
T Value;
VFSTag Tag;

View File

@ -386,13 +386,13 @@ TEST_F(ClangdVFSTest, CheckVersions) {
auto FooCpp = getVirtualTestFilePath("foo.cpp");
const auto SourceContents = "int a;";
FS->Files[FooCpp] = SourceContents;
FS->Tag = 123;
FS->Tag = "123";
Server.addDocument(FooCpp, SourceContents);
EXPECT_EQ(DiagConsumer->lastVFSTag(), FS->Tag);
EXPECT_EQ(Server.codeComplete(FooCpp, Position{0, 0}).Tag, FS->Tag);
FS->Tag = 321;
FS->Tag = "321";
Server.addDocument(FooCpp, SourceContents);
EXPECT_EQ(DiagConsumer->lastVFSTag(), FS->Tag);
EXPECT_EQ(Server.codeComplete(FooCpp, Position{0, 0}).Tag, FS->Tag);