pub fn build_module_graph(
root_program: &Program,
loader: &mut ModuleLoader,
extensions: &[ModuleExports],
prelude_imports: &[String],
) -> Result<ModuleGraph, GraphBuildError>Expand description
Build a complete module graph from a root program.
Algorithm:
- Pre-register native modules from
extensions - Create root node from the user’s program
- Walk imports recursively (DFS), loading Shape sources via
loader - Build interfaces per node
- Resolve per-node imports against dependency interfaces
- Cycle detection via visiting set
- Topological sort
Prelude modules are included as synthetic low-priority imports on each module node.