[PATCH] D92202: [clangd] Add symbol origin for remote index
Kirill Bobyrev via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 27 04:12:05 PST 2020
kbobyrev updated this revision to Diff 308016.
kbobyrev added a comment.
Don't assign additional Remote Origin: overwrite it.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D92202/new/
https://reviews.llvm.org/D92202
Files:
clang-tools-extra/clangd/index/SymbolOrigin.cpp
clang-tools-extra/clangd/index/SymbolOrigin.h
clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp
clang-tools-extra/clangd/unittests/remote/MarshallingTests.cpp
Index: clang-tools-extra/clangd/unittests/remote/MarshallingTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/remote/MarshallingTests.cpp
+++ clang-tools-extra/clangd/unittests/remote/MarshallingTests.cpp
@@ -16,6 +16,7 @@
#include "index/Symbol.h"
#include "index/SymbolID.h"
#include "index/SymbolLocation.h"
+#include "index/SymbolOrigin.h"
#include "index/remote/marshalling/Marshalling.h"
#include "clang/Index/IndexSymbol.h"
#include "llvm/ADT/SmallString.h"
@@ -154,6 +155,8 @@
ASSERT_TRUE(bool(Serialized));
auto Deserialized = ProtobufMarshaller.fromProtobuf(*Serialized);
ASSERT_TRUE(bool(Deserialized));
+ // Origin is overwritten when deserializing.
+ Sym.Origin = SymbolOrigin::Remote;
EXPECT_EQ(toYAML(Sym), toYAML(*Deserialized));
// Serialized paths are relative and have UNIX slashes.
EXPECT_EQ(convert_to_slash(Serialized->definition().file_path(),
@@ -258,6 +261,7 @@
Sym.IncludeHeaders.size());
auto Deserialized = ProtobufMarshaller.fromProtobuf(*Serialized);
ASSERT_TRUE(bool(Deserialized));
+ Sym.Origin = SymbolOrigin::Remote;
EXPECT_EQ(toYAML(Sym), toYAML(*Deserialized));
// This is an absolute path to a header: can not be transmitted over the wire.
Index: clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp
===================================================================
--- clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp
+++ clang-tools-extra/clangd/index/remote/marshalling/Marshalling.cpp
@@ -161,7 +161,8 @@
return Declaration.takeError();
Result.CanonicalDeclaration = *Declaration;
Result.References = Message.references();
- Result.Origin = static_cast<clangd::SymbolOrigin>(Message.origin());
+ // Overwrite symbol origin: it's coming from remote index.
+ Result.Origin = clangd::SymbolOrigin::Remote;
Result.Signature = Message.signature();
Result.TemplateSpecializationArgs = Message.template_specialization_args();
Result.CompletionSnippetSuffix = Message.completion_snippet_suffix();
Index: clang-tools-extra/clangd/index/SymbolOrigin.h
===================================================================
--- clang-tools-extra/clangd/index/SymbolOrigin.h
+++ clang-tools-extra/clangd/index/SymbolOrigin.h
@@ -25,6 +25,7 @@
Static = 1 << 2, // From the static, externally-built index.
Merge = 1 << 3, // A non-trivial index merge was performed.
Identifier = 1 << 4, // Raw identifiers in file.
+ Remote = 1 << 5, // Remote index.
// Remaining bits reserved for index implementations.
};
Index: clang-tools-extra/clangd/index/SymbolOrigin.cpp
===================================================================
--- clang-tools-extra/clangd/index/SymbolOrigin.cpp
+++ clang-tools-extra/clangd/index/SymbolOrigin.cpp
@@ -14,7 +14,7 @@
llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, SymbolOrigin O) {
if (O == SymbolOrigin::Unknown)
return OS << "unknown";
- constexpr static char Sigils[] = "ADSMI567";
+ constexpr static char Sigils[] = "ADSMIR67";
for (unsigned I = 0; I < sizeof(Sigils); ++I)
if (static_cast<uint8_t>(O) & 1u << I)
OS << Sigils[I];
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92202.308016.patch
Type: text/x-patch
Size: 3231 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20201127/08f09b4a/attachment.bin>
More information about the cfe-commits
mailing list