use crate::*; use SemanticTokenVariant as SemVar; pub fn generate_symbols_file(semantic_tokens: &[SemanticToken]) -> String { let mut symbols = String::new(); for token in semantic_tokens { if let SemVar::LabelDefinition(definition) = &token.variant { let address = token.bytecode.location.address; if address > 0xffff { break; } let name = &definition.name; let path = match &token.source.in_source { Some(source) => &source.path, None => &token.source.in_merged.path, }; if let Some(path) = path { let path = path.as_os_str().to_string_lossy(); symbols.push_str(&format!("{address:04x} {name} {path}\n")); } else { symbols.push_str(&format!("{address:04x} {name}\n")); } } } return symbols; }