}
}
- fn use_qualified_module(&mut self, submodule: &Module, exports: Vec<PredicateKey>) -> EvalSession
+ fn use_qualified_module(&mut self, submodule: &Module, exports: &Vec<PredicateKey>) -> EvalSession
{
- for (name, arity) in exports {
+ for (name, arity) in exports.iter().cloned() {
if !submodule.module_decl.exports.contains(&(name.clone(), arity)) {
continue;
}
TopLevelPacket::Decl(TopLevel::Declaration(Declaration::UseModule(name)), _) => {
if let Some(ref submodule) = wam.get_module(name.clone()) {
if let Some(ref mut module) = module {
+ let mut code_index = machine_code_index!(&mut code_dir, &mut op_dir);
+
module.use_module(submodule);
+ code_index.use_module(submodule);
+
continue;
}
} else {
TopLevelPacket::Decl(TopLevel::Declaration(Declaration::UseQualifiedModule(name, exports)), _) => {
if let Some(ref submodule) = wam.get_module(name.clone()) {
if let Some(ref mut module) = module {
- module.use_qualified_module(submodule, exports);
+ let mut code_index = machine_code_index!(&mut code_dir, &mut op_dir);
+
+ module.use_qualified_module(submodule, &exports);
+ code_index.use_qualified_module(submodule, &exports);
+
continue;
}
} else {
idx.1 = $mod_name.clone();
}}
}
+
+macro_rules! machine_code_index {
+ ($code_dir:expr, $op_dir:expr) => (
+ MachineCodeIndex { code_dir: $code_dir, op_dir: $op_dir }
+ )
+}
pub fn parse_batch(&mut self, op_dir: &mut OpDir) -> Result<Vec<TopLevelPacket>, EvalError>
{
- let mut preds = vec![];
+ let mut preds = vec![];
let mut mod_name = clause_name!("user");
let mut results = vec![];
let mut rel_worker = RelationWorker::new();