From 07fe30c97048bf507719a4bca25d105c51df9921 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Wed, 6 Mar 2019 09:54:27 -0700 Subject: [PATCH] correct abolish/1 --- src/prolog/lib/builtins.pl | 2 +- src/prolog/machine/dynamic_database.rs | 3 +-- src/prolog/machine/mod.rs | 7 ++----- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/prolog/lib/builtins.pl b/src/prolog/lib/builtins.pl index bd1d2fc8..bdce97e2 100644 --- a/src/prolog/lib/builtins.pl +++ b/src/prolog/lib/builtins.pl @@ -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)) ) diff --git a/src/prolog/machine/dynamic_database.rs b/src/prolog/machine/dynamic_database.rs index 4351f263..9ca57423 100644 --- a/src/prolog/machine/dynamic_database.rs +++ b/src/prolog/machine/dynamic_database.rs @@ -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, diff --git a/src/prolog/machine/mod.rs b/src/prolog/machine/mod.rs index 2759d72f..f950dfaf 100644 --- a/src/prolog/machine/mod.rs +++ b/src/prolog/machine/mod.rs @@ -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) -- 2.54.0