This commit is contained in:
Richard Feldman 2020-06-06 23:41:12 -04:00
parent 9e02537ebb
commit 0a9989e75f
7 changed files with 61 additions and 30 deletions

View file

@ -151,6 +151,7 @@ pub fn canonicalize_module_defs<'a>(
(Ok(declarations), output) => {
use crate::def::Declaration::*;
// Record the variables for all exposed symbols.
let mut exposed_vars_by_symbol = Vec::with_capacity(exposed_symbols.len());
for decl in declarations.iter() {
@ -193,6 +194,14 @@ pub fn canonicalize_module_defs<'a>(
InvalidCycle(identifiers, _) => {
panic!("TODO gracefully handle potentially attempting to expose invalid cyclic defs {:?}" , identifiers);
}
Builtin(def) => {
// Builtins cannot be exposed in module declarations.
// This should never happen!
debug_assert!(def
.pattern_vars
.iter()
.all(|(symbol, _)| !exposed_symbols.contains(symbol)));
}
}
}