summaryrefslogtreecommitdiff
path: root/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'vndk/tools/header-checker/src/repr/json/ir_dumper.cpp')
-rw-r--r--vndk/tools/header-checker/src/repr/json/ir_dumper.cpp29
1 files changed, 23 insertions, 6 deletions
diff --git a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
index 0b8f966a7..bf9e38ed5 100644
--- a/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
+++ b/vndk/tools/header-checker/src/repr/json/ir_dumper.cpp
@@ -81,13 +81,23 @@ void IRToJsonConverter::AddTemplateInfo(
void IRToJsonConverter::AddTypeInfo(JsonObject &type_decl,
const TypeIR *type_ir) {
- type_decl.Set("linker_set_key", type_ir->GetLinkerSetKey());
+ // LinkableMessageIR
type_decl.Set("source_file", type_ir->GetSourceFile());
+ const std::string &linker_set_key = type_ir->GetLinkerSetKey();
+ type_decl.Set("linker_set_key", linker_set_key);
+ // TypeIR
type_decl.Set("name", type_ir->GetName());
type_decl.Set("size", (uint64_t)type_ir->GetSize());
type_decl.Set("alignment", (uint64_t)type_ir->GetAlignment());
- type_decl.Set("referenced_type", type_ir->GetReferencedType());
- type_decl.Set("self_type", type_ir->GetSelfType());
+ const std::string &self_type = type_ir->GetSelfType();
+ if (self_type != linker_set_key) {
+ type_decl.Set("self_type", self_type);
+ }
+ // ReferencesOtherType
+ const std::string &referenced_type = type_ir->GetReferencedType();
+ if (referenced_type != self_type) {
+ type_decl.Set("referenced_type", referenced_type);
+ }
}
static JsonObject ConvertRecordFieldIR(const RecordFieldIR *record_field_ir) {
@@ -233,11 +243,18 @@ JsonObject IRToJsonConverter::ConvertEnumTypeIR(const EnumTypeIR *enump) {
JsonObject
IRToJsonConverter::ConvertGlobalVarIR(const GlobalVarIR *global_varp) {
JsonObject global_var;
- global_var.Set("referenced_type", global_varp->GetReferencedType());
- global_var.Set("source_file", global_varp->GetSourceFile());
+ // GlobalVarIR
global_var.Set("name", global_varp->GetName());
- global_var.Set("linker_set_key", global_varp->GetLinkerSetKey());
AddAccess(global_var, global_varp->GetAccess());
+ // LinkableMessageIR
+ global_var.Set("source_file", global_varp->GetSourceFile());
+ const std::string &linker_set_key = global_varp->GetLinkerSetKey();
+ global_var.Set("linker_set_key", linker_set_key);
+ // ReferencesOtherType
+ const std::string &referenced_type = global_varp->GetReferencedType();
+ if (linker_set_key != referenced_type) {
+ global_var.Set("referenced_type", referenced_type);
+ }
return global_var;
}