@@ -130,7 +130,8 @@ static const llvm::IndexedMap<llvm::StringRef, BlockIdToIndexFunctor>
130130 {BI_TEMPLATE_SPECIALIZATION_BLOCK_ID, " TemplateSpecializationBlock" },
131131 {BI_TEMPLATE_PARAM_BLOCK_ID, " TemplateParamBlock" },
132132 {BI_CONSTRAINT_BLOCK_ID, " ConstraintBlock" },
133- {BI_CONCEPT_BLOCK_ID, " ConceptBlock" }};
133+ {BI_CONCEPT_BLOCK_ID, " ConceptBlock" },
134+ {BI_VAR_BLOCK_ID, " VarBlock" }};
134135 assert (Inits.size () == BlockIdCount);
135136 for (const auto &Init : Inits)
136137 BlockIdNameMap[Init.first ] = Init.second ;
@@ -213,7 +214,12 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
213214 {CONCEPT_IS_TYPE, {" IsType" , &genBoolAbbrev}},
214215 {CONCEPT_CONSTRAINT_EXPRESSION,
215216 {" ConstraintExpression" , &genStringAbbrev}},
216- {CONSTRAINT_EXPRESSION, {" Expression" , &genStringAbbrev}}};
217+ {CONSTRAINT_EXPRESSION, {" Expression" , &genStringAbbrev}},
218+ {VAR_USR, {" USR" , &genSymbolIdAbbrev}},
219+ {VAR_NAME, {" Name" , &genStringAbbrev}},
220+ {VAR_DEFLOCATION, {" DefLocation" , &genLocationAbbrev}},
221+ {VAR_IS_STATIC, {" IsStatic" , &genBoolAbbrev}}};
222+
217223 assert (Inits.size () == RecordIdCount);
218224 for (const auto &Init : Inits) {
219225 RecordIdNameMap[Init.first ] = Init.second ;
@@ -277,7 +283,8 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
277283 {CONCEPT_USR, CONCEPT_NAME, CONCEPT_IS_TYPE,
278284 CONCEPT_CONSTRAINT_EXPRESSION}},
279285 // Constraint Block
280- {BI_CONSTRAINT_BLOCK_ID, {CONSTRAINT_EXPRESSION}}};
286+ {BI_CONSTRAINT_BLOCK_ID, {CONSTRAINT_EXPRESSION}},
287+ {BI_VAR_BLOCK_ID, {VAR_NAME, VAR_USR, VAR_DEFLOCATION, VAR_IS_STATIC}}};
281288
282289// AbbreviationMap
283290
@@ -540,6 +547,8 @@ void ClangDocBitcodeWriter::emitBlock(const NamespaceInfo &I) {
540547 emitBlock (C);
541548 for (const auto &C : I.Children .Concepts )
542549 emitBlock (C);
550+ for (const auto &C : I.Children .Variables )
551+ emitBlock (C);
543552}
544553
545554void ClangDocBitcodeWriter::emitBlock (const EnumInfo &I) {
@@ -682,6 +691,20 @@ void ClangDocBitcodeWriter::emitBlock(const ConstraintInfo &C) {
682691 emitBlock (C.ConceptRef , FieldId::F_concept);
683692}
684693
694+ void ClangDocBitcodeWriter::emitBlock (const VarInfo &I) {
695+ StreamSubBlockGuard Block (Stream, BI_VAR_BLOCK_ID);
696+ emitRecord (I.USR , VAR_USR);
697+ emitRecord (I.Name , VAR_NAME);
698+ for (const auto &N : I.Namespace )
699+ emitBlock (N, FieldId::F_namespace);
700+ for (const auto &CI : I.Description )
701+ emitBlock (CI);
702+ if (I.DefLoc )
703+ emitRecord (*I.DefLoc , VAR_DEFLOCATION);
704+ emitRecord (I.IsStatic , VAR_IS_STATIC);
705+ emitBlock (I.Type );
706+ }
707+
685708bool ClangDocBitcodeWriter::dispatchInfoForWrite (Info *I) {
686709 switch (I->IT ) {
687710 case InfoType::IT_namespace:
@@ -702,6 +725,9 @@ bool ClangDocBitcodeWriter::dispatchInfoForWrite(Info *I) {
702725 case InfoType::IT_concept:
703726 emitBlock (*static_cast <clang::doc::ConceptInfo *>(I));
704727 break ;
728+ case InfoType::IT_variable:
729+ emitBlock (*static_cast <VarInfo *>(I));
730+ break ;
705731 case InfoType::IT_default:
706732 llvm::errs () << " Unexpected info, unable to write.\n " ;
707733 return true ;
0 commit comments