bh_file_close(&tags_file);
}
+static i32 sort_symbol_resolutions(const SymbolResolution *a, const SymbolResolution *b) {
+ if (a->file_id != b->file_id) {
+ return a->file_id > b->file_id ? 1 : -1;
+ }
+
+ if (a->line != b->line) {
+ return a->line > b->line ? 1 : -1;
+ }
+
+ return 0;
+}
+
void onyx_docs_emit_symbol_info(const char *dest) {
bh_file sym_file;
if (bh_file_create(&sym_file, dest) != BH_FILE_ERROR_NONE) {
SymbolInfoTable *syminfo = context.symbol_info;
+ qsort(syminfo->symbols_resolutions,
+ bh_arr_length(syminfo->symbols_resolutions),
+ sizeof(SymbolResolution),
+ (int (*)(const void *, const void*)) sort_symbol_resolutions);
+
bh_buffer file_section;
bh_buffer_init(&file_section, global_heap_allocator, 2048);
fori (i, 0, shlen(syminfo->files)) {
SymbolInfoTable *syminfo = context.symbol_info;
assert(syminfo);
+ if (bh_imap_has(&syminfo->node_to_id, (u64) node)) return;
+
u32 symbol_id = syminfo->next_symbol_id++;
u32 file_id = symbol_info_get_file_id(syminfo, pos.filename);