MCPcopy Create free account
hub / github.com/PRQL/prql / resolve

Function resolve

prqlc/prqlc/src/semantic/mod.rs:40–61  ·  view source on GitHub ↗

Runs semantic analysis on the query.

(mut module_tree: pr::ModuleDef)

Source from the content-addressed store, hash-verified

38
39/// Runs semantic analysis on the query.
40pub fn resolve(mut module_tree: pr::ModuleDef) -> Result<RootModule> {
41 load_std_lib(&mut module_tree);
42
43 // expand AST into PL
44 debug::log_stage(debug::Stage::Semantic(debug::StageSemantic::AstExpand));
45 let root_module_def = ast_expand::expand_module_def(module_tree)?;
46 debug::log_entry(|| debug::DebugEntryKind::ReprPl(root_module_def.clone()));
47
48 // init new root module
49 let mut root_module = RootModule {
50 module: Module::new_root(),
51 ..Default::default()
52 };
53 let mut resolver = Resolver::new(&mut root_module);
54
55 // resolve the module def into the root module
56 debug::log_stage(debug::Stage::Semantic(debug::StageSemantic::Resolver));
57 resolver.fold_statements(root_module_def.stmts)?;
58 debug::log_entry(|| debug::DebugEntryKind::ReprDecl(root_module.clone()));
59
60 Ok(root_module)
61}
62
63/// Preferred way of injecting std module.
64pub fn load_std_lib(module_tree: &mut pr::ModuleDef) {

Callers 5

pl_to_lineageFunction · 0.85
stdFunction · 0.85
resolve_and_lowerFunction · 0.85
parse_and_resolveFunction · 0.85
executeMethod · 0.85

Calls 5

load_std_libFunction · 0.85
log_stageFunction · 0.85
expand_module_defFunction · 0.85
log_entryFunction · 0.85
fold_statementsMethod · 0.80

Tested by

no test coverage detected