]> Repositorios git - scryer-prolog.git/commitdiff
change behaviour in supposedly unreachable cases
authorBennet Bleßmann <[email protected]>
Sat, 26 Jul 2025 11:14:29 +0000 (13:14 +0200)
committerBennet Bleßmann <[email protected]>
Fri, 1 Aug 2025 18:46:31 +0000 (20:46 +0200)
src/machine/machine_errors.rs
src/machine/system_calls.rs

index fec32dddcb3cd99ba21e20d97802e1e15a6afcc2..084c8a83ee5244ec52fce4062834a1934c441816 100644 (file)
@@ -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 {
index a1eb15be3aaf9817004fb3f09e29a29349c28bdf..214c6d3ac09144d0080b22208735eb910124030c 100644 (file)
@@ -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(