pub fn merge_symbols(program: ParsedProgram) -> MultiErrorResult<MergedProgram>Expand description
Merge symbols from all parsed files into a unified program.
This function:
- Combines all items from all files into a single merged AST
- Detects duplicate function, struct, and enum definitions
- Reports errors with both locations for any duplicates found
§Arguments
program- The parsed program containing all files
§Returns
A MergedProgram ready for RIR generation, or errors if duplicates are found.
§Example
ⓘ
use gruel_compiler::{parse_all_files, merge_symbols, SourceFile};
use gruel_span::FileId;
let sources = vec![
SourceFile::new("main.gruel", "fn main() -> i32 { helper() }", FileId::new(1)),
SourceFile::new("utils.gruel", "fn helper() -> i32 { 42 }", FileId::new(2)),
];
let parsed = parse_all_files(&sources)?;
let merged = merge_symbols(parsed)?;
// merged.ast now contains both functions