diff --git a/compiler/can/src/module.rs b/compiler/can/src/module.rs index 38b9947d4f..a6230251b4 100644 --- a/compiler/can/src/module.rs +++ b/compiler/can/src/module.rs @@ -1,3 +1,4 @@ +use crate::builtins::builtin_defs; use crate::def::{canonicalize_defs, sort_can_defs, Declaration}; use crate::env::Env; use crate::expr::Output; @@ -114,7 +115,7 @@ pub fn canonicalize_module_defs<'a>( } } - let (defs, _scope, output, symbols_introduced) = canonicalize_defs( + let (mut defs, _scope, output, symbols_introduced) = canonicalize_defs( &mut env, Output::default(), var_store, @@ -152,6 +153,14 @@ pub fn canonicalize_module_defs<'a>( references.insert(*symbol); } + // Add defs for any referenced builtins. + for (symbol, def) in builtin_defs(var_store) { + if output.references.lookups.contains(&symbol) || output.references.calls.contains(&symbol) + { + defs.can_defs_by_symbol.insert(symbol, def); + } + } + match sort_can_defs(&mut env, defs, Output::default()) { (Ok(declarations), output) => { use crate::def::Declaration::*;