fix conformity testing #274

This commit is contained in:
Mark Thom
2019-04-18 20:32:50 -06:00
parent 2a69a74319
commit e089c8bdd2
11 changed files with 203 additions and 107 deletions

View File

@@ -3,6 +3,7 @@ use prolog_parser::parser::{get_desc, get_clause_spec};
use prolog_parser::tabled_rc::*;
use prolog::clause_types::*;
use prolog::forms::*;
use prolog::heap_print::*;
use prolog::machine::copier::*;
use prolog::machine::machine_errors::*;
@@ -908,7 +909,7 @@ impl MachineState {
_ => unreachable!()
};
let module = op.owning_module();
let module = op.owning_module();
let result = to_op_decl(priority, specifier.as_str(), op)
.map_err(SessionError::from)
@@ -1167,9 +1168,11 @@ impl MachineState {
},
_ => unreachable!()
},
Addr::Con(Constant::Atom(name, op_spec)) => {
Addr::Con(Constant::Atom(name, spec)) => {
let module = name.owning_module();
indices.predicate_exists(name, module, 0, op_spec)
let spec = fetch_atom_op_spec(name.clone(), spec, &indices.op_dir);
indices.predicate_exists(name, module, 0, spec)
},
head => {
let err = MachineError::type_error(ValidType::Callable, head);
@@ -1423,9 +1426,9 @@ impl MachineState {
let var_atom = Constant::Atom(var_atom, None);
let h = self.heap.h;
let op_desc = Some(SharedOpDesc::new(700, XFX));
let spec = fetch_atom_op_spec(clause_name!("="), None, &indices.op_dir);
self.heap.push(HeapCellValue::NamedStr(2, clause_name!("="), op_desc));
self.heap.push(HeapCellValue::NamedStr(2, clause_name!("="), spec));
self.heap.push(HeapCellValue::Addr(Addr::Con(var_atom)));
self.heap.push(HeapCellValue::Addr(binding));
@@ -1503,7 +1506,7 @@ impl MachineState {
let numbervars = self.store(self.deref(self[temp_v!(3)].clone()));
let quoted = self.store(self.deref(self[temp_v!(4)].clone()));
let mut printer = HCPrinter::new(&self, PrinterOutputter::new());
let mut printer = HCPrinter::new(&self, &indices.op_dir, PrinterOutputter::new());
if let &Addr::Con(Constant::Atom(ref name, ..)) = &ignore_ops {
printer.ignore_ops = name.as_str() == "true";