From 617c961f884099f4c102bba88c1e61f14c804bb0 Mon Sep 17 00:00:00 2001 From: Mark Date: Sat, 15 Jul 2023 10:44:00 -0600 Subject: [PATCH] add is_inbuilt check to err_on_builtin_overwrite (#1872) --- src/machine/loader.rs | 4 ++++ src/machine/machine_indices.rs | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/machine/loader.rs b/src/machine/loader.rs index 005d263f..0c39063c 100644 --- a/src/machine/loader.rs +++ b/src/machine/loader.rs @@ -328,6 +328,10 @@ impl<'a> LoadState<'a> for LiveLoadAndMachineState<'a> { loader: &Loader<'a, Self>, key: PredicateKey, ) -> Result<(), SessionError> { + if ClauseType::is_inbuilt(key.0, key.1) { + return Err(SessionError::CannotOverwriteBuiltIn(key)); + } + if let Some(builtins) = loader.wam_prelude.indices.modules.get(&atom!("builtins")) { if builtins.module_decl.exports.contains(&ModuleExport::PredicateKey(key)) { return Err(SessionError::CannotOverwriteBuiltIn(key)); diff --git a/src/machine/machine_indices.rs b/src/machine/machine_indices.rs index b19ac3bf..3e358db9 100644 --- a/src/machine/machine_indices.rs +++ b/src/machine/machine_indices.rs @@ -264,11 +264,9 @@ impl IndexStore { let (name, arity) = key; if !ClauseType::is_inbuilt(name, arity) { - return if let Some(module) = self.modules.get(&(atom!("builtins"))) { - module.code_dir.contains_key(&(name, arity)) - } else { - false - }; + self.modules.get(&(atom!("builtins"))) + .map(|module| module.code_dir.contains_key(&(name, arity))) + .unwrap_or(false) } else { true } -- 2.54.0