From: Mark Thom Date: Thu, 18 Mar 2021 01:50:41 +0000 (-0600) Subject: make chars callable (#713) X-Git-Tag: v0.9.0~121 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=10af2060241d580ee785cd696095bbc11d810fdc;p=scryer-prolog.git make chars callable (#713) --- diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index 71852bfb..59352308 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -1711,6 +1711,7 @@ impl MachineState { return None; } } + Addr::Char(c) => (clause_name!(c.to_string(), self.atom_tbl), 0), Addr::Con(h) => match &self.heap[h] { HeapCellValue::Atom(ref name, _) => (name.clone(), 0), _ => { @@ -1726,7 +1727,7 @@ impl MachineState { self.throw_exception(instantiation_error); return None; } - _ => { + addr => { let stub = MachineError::functor_stub(clause_name!("call"), arity + 1); let type_error = self.error_form( MachineError::type_error(self.heap.h(), ValidType::Callable, addr), diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index af8e3e7e..c7fcb154 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -2775,6 +2775,17 @@ impl MachineState { unreachable!() } } + Addr::Char(c) => { + return self.module_lookup( + indices, + call_policy, + (clause_name!(c.to_string(), self.atom_tbl), narity), + module_name, + true, + current_input_stream, + current_output_stream, + ); + } addr => { let stub = MachineError::functor_stub(clause_name!("(:)"), 2);