<div dir="ltr">Why would we want to serialize the origin?<div>We only serialize and deserialize for the static index, it does not seem to be useful to serialize origin in that scenario.</div><div><br></div><div>Am I missing something?</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 21, 2018 at 3:06 PM Eric Liu via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: ioeric<br>
Date: Fri Sep 21 06:04:57 2018<br>
New Revision: 342730<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=342730&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=342730&view=rev</a><br>
Log:<br>
[clangd] Remember to serialize symbol origin in YAML.<br>
<br>
Modified:<br>
    clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp<br>
    clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp<br>
<br>
Modified: clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp?rev=342730&r1=342729&r2=342730&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp?rev=342730&r1=342729&r2=342730&view=diff</a><br>
==============================================================================<br>
--- clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp (original)<br>
+++ clang-tools-extra/trunk/clangd/index/SymbolYAML.cpp Fri Sep 21 06:04:57 2018<br>
@@ -27,6 +27,7 @@ namespace yaml {<br>
<br>
 using clang::clangd::Symbol;<br>
 using clang::clangd::SymbolID;<br>
+using clang::clangd::SymbolOrigin;<br>
 using clang::clangd::SymbolLocation;<br>
 using clang::index::SymbolInfo;<br>
 using clang::index::SymbolKind;<br>
@@ -65,6 +66,17 @@ struct NormalizedSymbolFlag {<br>
   uint8_t Flag = 0;<br>
 };<br>
<br>
+struct NormalizedSymbolOrigin {<br>
+  NormalizedSymbolOrigin(IO &) {}<br>
+  NormalizedSymbolOrigin(IO &, SymbolOrigin O) {<br>
+    Origin = static_cast<uint8_t>(O);<br>
+  }<br>
+<br>
+  SymbolOrigin denormalize(IO &) { return static_cast<SymbolOrigin>(Origin); }<br>
+<br>
+  uint8_t Origin = 0;<br>
+};<br>
+<br>
 template <> struct MappingTraits<SymbolLocation::Position> {<br>
   static void mapping(IO &IO, SymbolLocation::Position &Value) {<br>
     IO.mapRequired("Line", Value.Line);<br>
@@ -102,6 +114,8 @@ template <> struct MappingTraits<Symbol><br>
     MappingNormalization<NormalizedSymbolID, SymbolID> NSymbolID(IO, Sym.ID);<br>
     MappingNormalization<NormalizedSymbolFlag, Symbol::SymbolFlag> NSymbolFlag(<br>
         IO, Sym.Flags);<br>
+    MappingNormalization<NormalizedSymbolOrigin, SymbolOrigin> NSymbolOrigin(<br>
+        IO, Sym.Origin);<br>
     IO.mapRequired("ID", NSymbolID->HexString);<br>
     IO.mapRequired("Name", Sym.Name);<br>
     IO.mapRequired("Scope", Sym.Scope);<br>
@@ -110,6 +124,7 @@ template <> struct MappingTraits<Symbol><br>
                    SymbolLocation());<br>
     IO.mapOptional("Definition", Sym.Definition, SymbolLocation());<br>
     IO.mapOptional("References", Sym.References, 0u);<br>
+    IO.mapOptional("Origin", NSymbolOrigin->Origin);<br>
     IO.mapOptional("Flags", NSymbolFlag->Flag);<br>
     IO.mapOptional("Signature", Sym.Signature);<br>
     IO.mapOptional("CompletionSnippetSuffix", Sym.CompletionSnippetSuffix);<br>
<br>
Modified: clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp?rev=342730&r1=342729&r2=342730&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp?rev=342730&r1=342729&r2=342730&view=diff</a><br>
==============================================================================<br>
--- clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp (original)<br>
+++ clang-tools-extra/trunk/unittests/clangd/SerializationTests.cpp Fri Sep 21 06:04:57 2018<br>
@@ -7,6 +7,7 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
+#include "index/Index.h"<br>
 #include "index/Serialization.h"<br>
 #include "index/SymbolYAML.h"<br>
 #include "llvm/Support/ScopedPrinter.h"<br>
@@ -35,6 +36,7 @@ CanonicalDeclaration:<br>
   End:<br>
     Line: 1<br>
     Column: 1<br>
+Origin:    4<br>
 Flags:    1<br>
 Documentation:    'Foo doc'<br>
 ReturnType:    'int'<br>
@@ -82,6 +84,7 @@ TEST(SerializationTest, YAMLConversions)<br>
   EXPECT_EQ(Sym1.Documentation, "Foo doc");<br>
   EXPECT_EQ(Sym1.ReturnType, "int");<br>
   EXPECT_EQ(Sym1.CanonicalDeclaration.FileURI, "file:///path/foo.h");<br>
+  EXPECT_EQ(Sym1.Origin, SymbolOrigin::Static);<br>
   EXPECT_TRUE(Sym1.Flags & Symbol::IndexedForCodeCompletion);<br>
   EXPECT_FALSE(Sym1.Flags & Symbol::Deprecated);<br>
   EXPECT_THAT(Sym1.IncludeHeaders,<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div>