@@ -154,6 +154,8 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
154154 {COMMENT_ARG, {" Arg" , &StringAbbrev}},
155155 {FIELD_TYPE_NAME, {" Name" , &StringAbbrev}},
156156 {FIELD_DEFAULT_VALUE, {" DefaultValue" , &StringAbbrev}},
157+ {TYPE_IS_BUILTIN, {" IsBuiltIn" , &BoolAbbrev}},
158+ {TYPE_IS_TEMPLATE, {" IsTemplate" , &BoolAbbrev}},
157159 {MEMBER_TYPE_NAME, {" Name" , &StringAbbrev}},
158160 {MEMBER_TYPE_ACCESS, {" Access" , &IntAbbrev}},
159161 {NAMESPACE_USR, {" USR" , &SymbolIDAbbrev}},
@@ -169,6 +171,7 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
169171 {ENUM_VALUE_EXPR, {" Expr" , &StringAbbrev}},
170172 {RECORD_USR, {" USR" , &SymbolIDAbbrev}},
171173 {RECORD_NAME, {" Name" , &StringAbbrev}},
174+ {RECORD_FULLNAME, {" FullName" , &StringAbbrev}},
172175 {RECORD_PATH, {" Path" , &StringAbbrev}},
173176 {RECORD_DEFLOCATION, {" DefLocation" , &LocationAbbrev}},
174177 {RECORD_LOCATION, {" Location" , &LocationAbbrev}},
@@ -187,6 +190,7 @@ static const llvm::IndexedMap<RecordIdDsc, RecordIdToIndexFunctor>
187190 {FUNCTION_LOCATION, {" Location" , &LocationAbbrev}},
188191 {FUNCTION_ACCESS, {" Access" , &IntAbbrev}},
189192 {FUNCTION_IS_METHOD, {" IsMethod" , &BoolAbbrev}},
193+ {FUNCTION_PROTOTYPE, {" ProtoType" , &StringAbbrev}},
190194 {REFERENCE_USR, {" USR" , &SymbolIDAbbrev}},
191195 {REFERENCE_NAME, {" Name" , &StringAbbrev}},
192196 {REFERENCE_QUAL_NAME, {" QualName" , &StringAbbrev}},
@@ -218,7 +222,7 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
218222 COMMENT_PARAMNAME, COMMENT_CLOSENAME, COMMENT_SELFCLOSING,
219223 COMMENT_EXPLICIT, COMMENT_ATTRKEY, COMMENT_ATTRVAL, COMMENT_ARG}},
220224 // Type Block
221- {BI_TYPE_BLOCK_ID, {}},
225+ {BI_TYPE_BLOCK_ID, {TYPE_IS_BUILTIN, TYPE_IS_TEMPLATE }},
222226 // FieldType Block
223227 {BI_FIELD_TYPE_BLOCK_ID, {FIELD_TYPE_NAME, FIELD_DEFAULT_VALUE}},
224228 // MemberType Block
@@ -237,7 +241,7 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
237241 {NAMESPACE_USR, NAMESPACE_NAME, NAMESPACE_PATH}},
238242 // Record Block
239243 {BI_RECORD_BLOCK_ID,
240- {RECORD_USR, RECORD_NAME, RECORD_PATH, RECORD_DEFLOCATION,
244+ {RECORD_USR, RECORD_NAME, RECORD_FULLNAME, RECORD_PATH, RECORD_DEFLOCATION,
241245 RECORD_LOCATION, RECORD_TAG_TYPE, RECORD_IS_TYPE_DEF}},
242246 // BaseRecord Block
243247 {BI_BASE_RECORD_BLOCK_ID,
@@ -246,11 +250,11 @@ static const std::vector<std::pair<BlockId, std::vector<RecordId>>>
246250 BASE_RECORD_IS_PARENT}},
247251 // Function Block
248252 {BI_FUNCTION_BLOCK_ID,
249- {FUNCTION_USR, FUNCTION_NAME, FUNCTION_DEFLOCATION, FUNCTION_LOCATION,
250- FUNCTION_ACCESS, FUNCTION_IS_METHOD}},
253+ {FUNCTION_USR, FUNCTION_PROTOTYPE, FUNCTION_NAME, FUNCTION_DEFLOCATION,
254+ FUNCTION_LOCATION, FUNCTION_ACCESS, FUNCTION_IS_METHOD}},
251255 // Reference Block
252256 {BI_REFERENCE_BLOCK_ID,
253- {REFERENCE_USR, REFERENCE_NAME, REFERENCE_QUAL_NAME, REFERENCE_TYPE,
257+ {REFERENCE_USR, REFERENCE_NAME, REFERENCE_QUAL_NAME, REFERENCE_TYPE,
254258 REFERENCE_PATH, REFERENCE_FIELD}},
255259 // Template Blocks.
256260 {BI_TEMPLATE_BLOCK_ID, {}},
@@ -425,6 +429,11 @@ void ClangDocBitcodeWriter::emitBlockInfo(BlockId BID,
425429void ClangDocBitcodeWriter::emitBlock (const Reference &R, FieldId Field) {
426430 if (R.USR == EmptySID && R.Name .empty ())
427431 return ;
432+
433+ if (R.Name == " const Shape &" ) {
434+ llvm::outs () << " const Shape & USR: " <<
435+ llvm::toHex (llvm::toStringRef (R.USR )) << " \n " ;
436+ }
428437 StreamSubBlockGuard Block (Stream, BI_REFERENCE_BLOCK_ID);
429438 emitRecord (R.USR , REFERENCE_USR);
430439 emitRecord (R.Name , REFERENCE_NAME);
@@ -437,6 +446,8 @@ void ClangDocBitcodeWriter::emitBlock(const Reference &R, FieldId Field) {
437446void ClangDocBitcodeWriter::emitBlock (const TypeInfo &T) {
438447 StreamSubBlockGuard Block (Stream, BI_TYPE_BLOCK_ID);
439448 emitBlock (T.Type , FieldId::F_type);
449+ emitRecord (T.IsBuiltIn , TYPE_IS_BUILTIN);
450+ emitRecord (T.IsTemplate , TYPE_IS_TEMPLATE);
440451}
441452
442453void ClangDocBitcodeWriter::emitBlock (const TypedefInfo &T) {
@@ -455,14 +466,14 @@ void ClangDocBitcodeWriter::emitBlock(const TypedefInfo &T) {
455466
456467void ClangDocBitcodeWriter::emitBlock (const FieldTypeInfo &T) {
457468 StreamSubBlockGuard Block (Stream, BI_FIELD_TYPE_BLOCK_ID);
458- emitBlock (T. Type , FieldId::F_type );
469+ emitBlock (static_cast <TypeInfo>(T) );
459470 emitRecord (T.Name , FIELD_TYPE_NAME);
460471 emitRecord (T.DefaultValue , FIELD_DEFAULT_VALUE);
461472}
462473
463474void ClangDocBitcodeWriter::emitBlock (const MemberTypeInfo &T) {
464475 StreamSubBlockGuard Block (Stream, BI_MEMBER_TYPE_BLOCK_ID);
465- emitBlock (T. Type , FieldId::F_type );
476+ emitBlock (static_cast <FieldTypeInfo>(T) );
466477 emitRecord (T.Name , MEMBER_TYPE_NAME);
467478 emitRecord (T.Access , MEMBER_TYPE_ACCESS);
468479 for (const auto &CI : T.Description )
@@ -544,6 +555,7 @@ void ClangDocBitcodeWriter::emitBlock(const RecordInfo &I) {
544555 StreamSubBlockGuard Block (Stream, BI_RECORD_BLOCK_ID);
545556 emitRecord (I.USR , RECORD_USR);
546557 emitRecord (I.Name , RECORD_NAME);
558+ emitRecord (I.FullName , RECORD_FULLNAME);
547559 emitRecord (I.Path , RECORD_PATH);
548560 for (const auto &N : I.Namespace )
549561 emitBlock (N, FieldId::F_namespace);
@@ -593,6 +605,7 @@ void ClangDocBitcodeWriter::emitBlock(const BaseRecordInfo &I) {
593605void ClangDocBitcodeWriter::emitBlock (const FunctionInfo &I) {
594606 StreamSubBlockGuard Block (Stream, BI_FUNCTION_BLOCK_ID);
595607 emitRecord (I.USR , FUNCTION_USR);
608+ emitRecord (I.ProtoType , FUNCTION_PROTOTYPE);
596609 emitRecord (I.Name , FUNCTION_NAME);
597610 for (const auto &N : I.Namespace )
598611 emitBlock (N, FieldId::F_namespace);
0 commit comments