From: Mark Date: Tue, 26 Sep 2023 20:06:21 +0000 (-0600) Subject: remove module_resolution_error (#2035) X-Git-Tag: remove~79 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=a6535c28ea13bb2717fb30c0c1584a0a0bfa1454;p=scryer-prolog.git remove module_resolution_error (#2035) --- diff --git a/src/machine/machine_errors.rs b/src/machine/machine_errors.rs index 971ef8e4..9a9d6cbf 100644 --- a/src/machine/machine_errors.rs +++ b/src/machine/machine_errors.rs @@ -341,26 +341,6 @@ impl MachineState { culprit.type_error(self, valid_type) } - pub(super) fn module_resolution_error( - &mut self, - mod_name: Atom, - name: Atom, - arity: usize, - ) -> MachineError { - let h = self.heap.len(); - - let res_stub = functor!(atom!(":"), [atom(mod_name), atom(name)]); - let ind_stub = functor!(atom!("/"), [str(h + 2, 0), fixnum(arity)], [res_stub]); - - let stub = functor!(atom!("evaluation_error"), [str(h, 0)], [ind_stub]); - - MachineError { - stub, - location: None, - from: ErrorProvenance::Constructed, - } - } - pub(super) fn existence_error(&mut self, err: ExistenceError) -> MachineError { match err { ExistenceError::Module(name) => { @@ -375,6 +355,20 @@ impl MachineState { from: ErrorProvenance::Received, } } + ExistenceError::QualifiedProcedure { module_name, name, arity } => { + let h = self.heap.len(); + + let ind_stub = functor!(atom!("/"), [atom(name), fixnum(arity)]); + let res_stub = functor!(atom!(":"), [atom(module_name), str(h + 3, 0)], [ind_stub]); + + let stub = functor!(atom!("existence_error"), [atom(atom!("procedure")), str(h, 0)], [res_stub]); + + MachineError { + stub, + location: None, + from: ErrorProvenance::Constructed, + } + } ExistenceError::Procedure(name, arity) => { let culprit = functor!(atom!("/"), [atom(name), fixnum(arity)]); @@ -992,6 +986,7 @@ pub enum ExistenceError { Module(Atom), ModuleSource(ModuleSource), Procedure(Atom, usize), + QualifiedProcedure { module_name: Atom, name: Atom, arity: usize }, SourceSink(HeapCellValue), Stream(HeapCellValue), } diff --git a/src/machine/mod.rs b/src/machine/mod.rs index 0018610e..665366c3 100644 --- a/src/machine/mod.rs +++ b/src/machine/mod.rs @@ -1167,7 +1167,7 @@ impl Machine { let stub = functor_stub(name, arity); let err = self .machine_st - .module_resolution_error(module_name, name, arity); + .existence_error(ExistenceError::QualifiedProcedure { module_name, name, arity }); Err(self.machine_st.error_form(err, stub)) } @@ -1195,7 +1195,7 @@ impl Machine { let stub = functor_stub(name, arity); let err = self .machine_st - .module_resolution_error(module_name, name, arity); + .existence_error(ExistenceError::QualifiedProcedure { module_name, name, arity }); Err(self.machine_st.error_form(err, stub)) }