Skip to main content

merge_symbols

Function merge_symbols 

Source
pub fn merge_symbols(program: ParsedProgram) -> MultiErrorResult<MergedProgram>
Expand description

Merge symbols from all parsed files into a unified program.

This function:

  1. Combines all items from all files into a single merged AST
  2. Detects duplicate function, struct, and enum definitions
  3. 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