From: Bennet Bleßmann Date: Sat, 26 Jul 2025 11:14:29 +0000 (+0200) Subject: change behaviour in supposedly unreachable cases X-Git-Tag: v0.10.0~35^2^2~16 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=dc495f10f8469700bc90e9f8ab30b2a8c5f9cc0a;p=scryer-prolog.git change behaviour in supposedly unreachable cases --- diff --git a/src/machine/machine_errors.rs b/src/machine/machine_errors.rs index fec32ddd..084c8a83 100644 --- a/src/machine/machine_errors.rs +++ b/src/machine/machine_errors.rs @@ -601,6 +601,15 @@ impl MachineState { } } + pub(super) fn unreachable_error(&self) -> MachineError { + let stub = functor!(atom!("system_error")); + + MachineError { + stub, + location: None, + } + } + #[cfg(feature = "ffi")] pub(super) fn ffi_error(&self, err: FFIError) -> MachineError { let error_atom = match err { diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index a1eb15be..214c6d3a 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -8680,6 +8680,7 @@ impl Machine { self.machine_st.throw_resource_error(resource_err_loc); } } + Ok(()) } else { #[cfg(unix)] { @@ -8697,16 +8698,18 @@ impl Machine { self.machine_st.throw_resource_error(resource_err_loc); } } + Ok(()) } else { - unify!(self.machine_st, status_r, atom_as_cell!(atom!("unknown"))); + let err = self.machine_st.unreachable_error(); + Err(self.machine_st.error_form(err, stub_gen())) } } #[cfg(not(unix))] { - unify!(self.machine_st, status_r, atom_as_cell!(atom!("unknown"))); + let err = self.machine_st.unreachable_error(); + Err(self.machine_st.error_form(err, stub_gen())) } } - Ok(()) } Err(_) => { let perm_error = self.machine_st.permission_error(