From: Mark Date: Mon, 18 Dec 2023 21:57:22 +0000 (-0700) Subject: don't replace undefined module predicates (#2232) X-Git-Tag: v0.9.4~67 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=335330690fd946b8830c6f44d6b5367139547acb;p=scryer-prolog.git don't replace undefined module predicates (#2232) --- diff --git a/src/machine/load_state.rs b/src/machine/load_state.rs index 079ee29e..456cfb9a 100644 --- a/src/machine/load_state.rs +++ b/src/machine/load_state.rs @@ -497,19 +497,21 @@ impl<'a, LS: LoadState<'a>> Loader<'a, LS> { } for (key, code_index) in removed_module.code_dir.iter_mut() { - if skipped_local_predicates.contains(&key) { + if skipped_local_predicates.contains(key) { continue; } - let old_index_ptr = code_index.replace(IndexPtr::undefined()); + if !code_index.is_undefined() && !code_index.is_dynamic_undefined() { + let old_index_ptr = code_index.replace(IndexPtr::undefined()); - self.payload - .retraction_info - .push_record(RetractionRecord::ReplacedModulePredicate( - module_name, - *key, - old_index_ptr, - )); + self.payload + .retraction_info + .push_record(RetractionRecord::ReplacedModulePredicate( + module_name, + *key, + old_index_ptr, + )); + } } for (key, skeleton) in removed_module.extensible_predicates.drain(..) {