[clangd] Fix serialization logic for Origin and Flags.
authorKadir Cetinkaya <kadircet@google.com>
Mon, 29 Apr 2019 17:25:58 +0000 (17:25 +0000)
committerKadir Cetinkaya <kadircet@google.com>
Mon, 29 Apr 2019 17:25:58 +0000 (17:25 +0000)
llvm-svn: 359470

clang-tools-extra/clangd/index/Serialization.cpp
clang-tools-extra/clangd/unittests/SerializationTests.cpp

index 410cba0..62eb3fc 100644 (file)
@@ -314,8 +314,8 @@ Symbol readSymbol(Reader &Data, llvm::ArrayRef<llvm::StringRef> Strings) {
   Sym.Definition = readLocation(Data, Strings);
   Sym.CanonicalDeclaration = readLocation(Data, Strings);
   Sym.References = Data.consumeVar();
-  Sym.Flags = static_cast<Symbol::SymbolFlag>(Data.consumeVar());
-  Sym.Origin = static_cast<SymbolOrigin>(Data.consumeVar());
+  Sym.Flags = static_cast<Symbol::SymbolFlag>(Data.consume8());
+  Sym.Origin = static_cast<SymbolOrigin>(Data.consume8());
   Sym.Signature = Data.consumeString(Strings);
   Sym.CompletionSnippetSuffix = Data.consumeString(Strings);
   Sym.Documentation = Data.consumeString(Strings);
index 3260ac6..c859208 100644 (file)
@@ -40,8 +40,8 @@ CanonicalDeclaration:
   End:
     Line: 1
     Column: 1
-Origin:    4
-Flags:    1
+Origin:    128
+Flags:    129
 Documentation:    'Foo doc'
 ReturnType:    'int'
 IncludeHeaders:
@@ -115,7 +115,8 @@ TEST(SerializationTest, YAMLConversions) {
   EXPECT_EQ(Sym1.Documentation, "Foo doc");
   EXPECT_EQ(Sym1.ReturnType, "int");
   EXPECT_EQ(StringRef(Sym1.CanonicalDeclaration.FileURI), "file:///path/foo.h");
-  EXPECT_EQ(Sym1.Origin, SymbolOrigin::Static);
+  EXPECT_EQ(Sym1.Origin, static_cast<SymbolOrigin>(1 << 7));
+  EXPECT_EQ(static_cast<uint8_t>(Sym1.Flags), 129);
   EXPECT_TRUE(Sym1.Flags & Symbol::IndexedForCodeCompletion);
   EXPECT_FALSE(Sym1.Flags & Symbol::Deprecated);
   EXPECT_THAT(Sym1.IncludeHeaders,