///|
fn json_string(value : String) -> String {
Json::string(value).stringify()
}
///|
/// Render the resolution as a stable JSON document for CI and build tools.
pub fn LinkResolution::to_json(self : LinkResolution) -> String {
let builder = StringBuilder()
builder.write_string("{\"schema\":\"moonlink-resolution-v1\",\"ok\":")
builder.write_string(if self.is_ok() { "true" } else { "false" })
builder.write_string(",\"object_count\":")
builder.write_string(self.object_count.to_string())
builder.write_string(",\"input_symbol_count\":")
builder.write_string(self.input_symbol_count.to_string())
builder.write_string(",\"resolved\":[")
for index in 0.. 0 {
builder.write_string(",")
}
let symbol = self.symbols[index]
builder.write_string("{\"name\":")
builder.write_string(json_string(symbol.name))
builder.write_string(",\"binding\":")
builder.write_string(json_string(symbol.binding_name()))
builder.write_string(",\"kind\":")
builder.write_string(json_string(symbol.kind_name()))
builder.write_string(",\"object\":")
builder.write_string(json_string(symbol.object_name))
builder.write_string(",\"symbol_index\":")
builder.write_string(symbol.symbol_index.to_string())
builder.write_string(",\"value\":")
builder.write_string(json_string("0x" + symbol.value.to_string(radix=16)))
builder.write_string(",\"size\":")
builder.write_string(json_string(symbol.size.to_string()))
builder.write_string("}")
}
builder.write_string("],\"duplicates\":[")
for index in 0.. 0 {
builder.write_string(",")
}
let duplicate = self.duplicates[index]
builder.write_string("{\"name\":")
builder.write_string(json_string(duplicate.name))
builder.write_string(",\"objects\":[")
for object_index in 0.. 0 {
builder.write_string(",")
}
builder.write_string(json_string(duplicate.objects[object_index]))
}
builder.write_string("]}")
}
builder.write_string("],\"unresolved\":[")
for index in 0.. 0 {
builder.write_string(",")
}
let unresolved = self.unresolved[index]
builder.write_string("{\"name\":")
builder.write_string(json_string(unresolved.name))
builder.write_string(",\"references\":[")
for reference_index in 0.. 0 {
builder.write_string(",")
}
let reference = unresolved.references[reference_index]
builder.write_string("{\"object\":")
builder.write_string(json_string(reference.object_name))
builder.write_string(",\"object_index\":")
builder.write_string(reference.object_index.to_string())
builder.write_string(",\"symbol_index\":")
builder.write_string(reference.symbol_index.to_string())
builder.write_string("}")
}
builder.write_string("]}")
}
builder.write_string("]}")
builder.to_string()
}