Skip to main content

build_module_graph

Function build_module_graph 

Source
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:

  1. Pre-register native modules from extensions
  2. Create root node from the user’s program
  3. Walk imports recursively (DFS), loading Shape sources via loader
  4. Build interfaces per node
  5. Resolve per-node imports against dependency interfaces
  6. Cycle detection via visiting set
  7. Topological sort

Prelude modules are included as synthetic low-priority imports on each module node.