]> Repositorios git - scryer-prolog.git/commitdiff
add is_inbuilt check to err_on_builtin_overwrite (#1872)
authorMark <[email protected]>
Sat, 15 Jul 2023 16:44:00 +0000 (10:44 -0600)
committerMark <[email protected]>
Sat, 15 Jul 2023 16:44:00 +0000 (10:44 -0600)
src/machine/loader.rs
src/machine/machine_indices.rs

index 005d263f930113e9f87b5de69ce0b8a9d3755f2e..0c39063c5416078f74b883c63569086ba53d5ad1 100644 (file)
@@ -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));
index b19ac3bf44ec60b09356695ac3e13596bf5c029e..3e358db995b5f8bc0a48fcb4aeedaca1d4070899 100644 (file)
@@ -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
         }