Preferred way of injecting std module.
(module_tree: &mut pr::ModuleDef)
| 62 | |
| 63 | /// Preferred way of injecting std module. |
| 64 | pub fn load_std_lib(module_tree: &mut pr::ModuleDef) { |
| 65 | if !module_tree.stmts.iter().any(|s| is_mod_def_for(s, NS_STD)) { |
| 66 | log::debug!("loading std.prql"); |
| 67 | let _suppressed = debug::log_suppress(); |
| 68 | |
| 69 | let std_source = include_str!("std.prql"); |
| 70 | match parser::parse_source(std_source, 0) { |
| 71 | Ok(stmts) => { |
| 72 | let stmt = pr::Stmt::new(pr::StmtKind::ModuleDef(pr::ModuleDef { |
| 73 | name: "std".to_string(), |
| 74 | stmts, |
| 75 | })); |
| 76 | module_tree.stmts.insert(0, stmt); |
| 77 | } |
| 78 | Err(errs) => { |
| 79 | panic!("std.prql failed to compile:\n{errs:?}"); |
| 80 | } |
| 81 | } |
| 82 | } |
| 83 | } |
| 84 | |
| 85 | pub fn is_ident_or_func_call(expr: &pl::Expr, name: &pr::Ident) -> bool { |
| 86 | match &expr.kind { |
no test coverage detected