]> Repositorios git - scryer-prolog.git/commitdiff
correct abolish/1
authorMark Thom <[email protected]>
Wed, 6 Mar 2019 16:54:27 +0000 (09:54 -0700)
committerMark Thom <[email protected]>
Wed, 6 Mar 2019 16:54:27 +0000 (09:54 -0700)
src/prolog/lib/builtins.pl
src/prolog/machine/dynamic_database.rs
src/prolog/machine/mod.rs

index bd1d2fc8b7db0d808f84b8faea6fca1defb5f3f8..bdce97e24e96a011c412e7fe7f68537e73ff1607 100644 (file)
@@ -566,7 +566,7 @@ abolish(Pred) :-
          ; Arity < 0 -> throw(domain_error(not_less_than_zero, Arity), abolish/1)
          ; max_arity(N), Arity > N -> throw(representation_error(max_arity), abolish/1)
          ; functor(Head, Name, Arity) ->
-           (  '$no_such_predicate'(Head) -> true
+           (  '$no_such_predicate'(Head) -> '$abolish_clause'(Name, Arity)
            ;  '$head_is_dynamic'(Head) -> '$abolish_clause'(Name, Arity)
            ;  throw(error(permission_error(modify, static_procedure, Pred), abolish/1))
            )
index 4351f263d1199c6ea3baa37b8f7f06db34578f97..9ca5742327b40711ee4207506ce1e80de53c0d18 100644 (file)
@@ -69,8 +69,7 @@ impl Machine {
             set_code_index!(idx, IndexPtr::Undefined, clause_name!("user"));
         }
 
-        self.indices.code_dir.remove(&(name.clone(), arity));
-        self.indices.dynamic_code_dir.remove(&(name, arity));
+        self.indices.remove_code_index((name, arity));
     }
 
     fn handle_eval_result_from_dynamic_compile(&mut self, pred_str: String, name: ClauseName,
index 2759d72fd83a665b380162417f3a5af4939b37c3..f950dfaf1cc9b155020918f479baa344118a4108 100644 (file)
@@ -103,11 +103,8 @@ impl SubModuleUser for IndexStore {
 
     fn remove_code_index(&mut self, key: PredicateKey)
     {
-        self.code_dir.remove(&key);
-
-        if self.dynamic_code_dir.contains_key(&key) {
-            self.dynamic_code_dir.remove(&key);
-        }
+        self.code_dir.remove(&key);        
+        self.dynamic_code_dir.remove(&key);
     }
 
     fn insert_dir_entry(&mut self, name: ClauseName, arity: usize, idx: ModuleCodeIndex)