29 Object *RootObjectPtr = ExpectedJSON->getAsObject();
38 const Object &RootObject = *RootObjectPtr;
40 const Array *LUNamespaceArray = RootObject.getArray(
"lu_namespace");
41 if (!LUNamespaceArray) {
44 "NestedBuildNamespace",
"lu_namespace",
"array")
49 auto ExpectedLUNamespace = nestedBuildNamespaceFromJSON(*LUNamespaceArray);
50 if (!ExpectedLUNamespace) {
58 LUSummary Summary(std::move(*ExpectedLUNamespace));
61 const Array *IdTableArray = RootObject.getArray(
"id_table");
65 "IdTable",
"id_table",
"array")
70 auto ExpectedIdTable = entityIdTableFromJSON(*IdTableArray);
71 if (!ExpectedIdTable) {
78 getIdTable(Summary) = std::move(*ExpectedIdTable);
82 const Array *LinkageTableArray = RootObject.getArray(
"linkage_table");
83 if (!LinkageTableArray) {
86 "LinkageTable",
"linkage_table",
"array")
91 auto ExpectedIdRange =
92 llvm::make_second_range(getEntities(getIdTable(Summary)));
93 std::set<EntityId> ExpectedIds(ExpectedIdRange.begin(),
94 ExpectedIdRange.end());
98 auto ExpectedLinkageTable =
99 linkageTableFromJSON(*LinkageTableArray, std::move(ExpectedIds));
100 if (!ExpectedLinkageTable) {
108 getLinkageTable(Summary) = std::move(*ExpectedLinkageTable);
112 const Array *SummaryDataArray = RootObject.getArray(
"data");
113 if (!SummaryDataArray) {
116 "SummaryData entries",
"data",
"array")
121 auto ExpectedSummaryDataMap =
122 summaryDataMapFromJSON(*SummaryDataArray, getIdTable(Summary));
123 if (!ExpectedSummaryDataMap) {
131 getData(Summary) = std::move(*ExpectedSummaryDataMap);
134 return std::move(Summary);
138 llvm::StringRef Path) {
141 RootObject[
"lu_namespace"] = nestedBuildNamespaceToJSON(getLUNamespace(S));
143 RootObject[
"id_table"] = entityIdTableToJSON(getIdTable(S));
145 RootObject[
"linkage_table"] = linkageTableToJSON(getLinkageTable(S));
147 auto ExpectedDataObject = summaryDataMapToJSON(getData(S));
148 if (!ExpectedDataObject) {
154 RootObject[
"data"] = std::move(*ExpectedDataObject);
162 return llvm::Error::success();