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];
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];
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits