]> Repositorios git - scryer-prolog.git/commitdiff
add instantiation error to skip_max_list
authorMark Thom <[email protected]>
Sun, 20 May 2018 18:51:21 +0000 (12:51 -0600)
committerMark Thom <[email protected]>
Sun, 20 May 2018 18:51:21 +0000 (12:51 -0600)
src/prolog/machine/system_calls.rs

index bbf4d2373b2c76eae16774a1e634196bd8b83e54..2a18ce83b687ebd08d89cc0129210ab469b6ab65 100644 (file)
@@ -106,8 +106,8 @@ impl MachineState {
         let max_steps = self.store(self.deref(self[temp_v!(2)].clone()));
 
         match max_steps {
-            Addr::Con(Constant::Number(Number::Integer(ref max_steps)))
-                if max_steps.to_isize().map(|i| i >= -1).unwrap_or(false) => {
+            Addr::Con(Constant::Number(Number::Integer(ref max_steps))) =>
+                if max_steps.to_isize().map(|i| i >= -1).unwrap_or(false) {
                     let n = self.store(self.deref(self[temp_v!(1)].clone()));
 
                     match n {
@@ -145,8 +145,13 @@ impl MachineState {
                             }
                         }
                     }
+                } else {
+                    self.fail = true;
                 },
-            _ => self.fail = true
+            _ => {
+                let stub = self.functor_stub(clause_name!("$skip_max_list"), 4);
+                return Err(self.error_form(self.instantiation_error(), stub));
+            }
         };
 
         Ok(())