if module.module_decl.exports.contains(&(name.clone(), arity)) {
if let Some(idx) = wam.indices.code_dir.get(&(name.clone(), arity)) {
- if module.module_decl.name == idx.0.borrow().1 {
+ if module.module_decl.name == module_name {
if module_code.len() > 0 {
set_code_index!(idx, IndexPtr::Index(wam.code_repo.code.len()),
module_name.clone());
let idx = code_dir.entry((name.clone(), arity)).or_insert(CodeIndex::default());
set_code_index!(idx, IndexPtr::Index(p), self.get_module_name());
-/*
- println!("{}/{}:", name.as_str(), arity);
- print_code(&decl_code);
- */
- self.localize_self_calls(name, arity, &mut decl_code, p);
+
+ self.localize_self_calls(name, arity, &mut decl_code, p);
code.extend(decl_code.into_iter());
}
fn remove_code_index(&mut self, key: PredicateKey)
{
self.code_dir.remove(&key);
- self.dynamic_code_dir.remove(&(key.0.owning_module(), key.0, key.1));
}
fn insert_dir_entry(&mut self, name: ClauseName, arity: usize, idx: CodeIndex)
// ensure we don't try to overwrite the name/arity of a builtin.
let err_str = format!("{}/{}", key.0, key.1);
let err_str = clause_name!(err_str, self.indices.atom_tbl());
-
+
return Err(SessionError::CannotOverwriteBuiltIn(err_str));
}
};
-
+
if let Some(ref existing_idx) = self.indices.code_dir.get(&key) {
// ensure we don't try to overwrite an existing predicate from a different module.
if !existing_idx.is_undefined() && !idx.is_undefined() {
let err_str = format!("{}/{} from module {}", key.0, key.1,
existing_idx.module_name().as_str());
let err_str = clause_name!(err_str, self.indices.atom_tbl());
-
+
return Err(SessionError::CannotOverwriteImport(err_str));
}
}
Ok(())
}
-
+
pub fn add_batched_code(&mut self, code: Code, code_dir: CodeDir)
{
// error detection has finished, so update the master index of keys.
PrinterOutputter::new())
.result();
- let err_str = clause_name!(err_str, self.indices.atom_tbl());
+ let err_str = clause_name!(err_str, self.indices.atom_tbl());
EvalSession::from(SessionError::QueryFailureWithException(err_str))
} else {
EvalSession::from(SessionError::QueryFailure)