]> Repositorios git - scryer-prolog.git/commitdiff
Handle stub_b = b as false
authorNicolas Luck <[email protected]>
Tue, 3 Oct 2023 18:12:11 +0000 (20:12 +0200)
committerNicolas Luck <[email protected]>
Tue, 3 Oct 2023 18:12:11 +0000 (20:12 +0200)
src/machine/lib_machine.rs

index 18d6c7e63c13e09bc265eca4ab070bfcce3d174b..83e5b048d3069e73474266b41af3433b114c306b 100644 (file)
@@ -95,13 +95,11 @@ impl Machine {
         loop {
             self.dispatch_loop();
 
-            if self.machine_st.fail {
-                // NOTE: only print results on success
-                self.machine_st.fail = false;
-                println!("false");
-                matches.push(QueryResolutionLine::False);
-                break;
-            } else if self.machine_st.ball.stub.len() != 0 {
+            //println!("b: {}", self.machine_st.b);
+            //println!("stub_b: {}", stub_b);
+            //println!("fail: {}", self.machine_st.fail);
+
+            if self.machine_st.ball.stub.len() != 0 {
                 // NOTE: this means an exception was thrown, at which
                 // point we backtracked to the stub choice point.
                 // this should halt the search for solutions as it
@@ -128,7 +126,23 @@ impl Machine {
                     .join(" ");
                 
                 return Err(error_string);
-            }
+            } 
+            
+            if self.machine_st.fail {
+                // NOTE: only print results on success
+                self.machine_st.fail = false;
+                println!("fail!");
+                matches.push(QueryResolutionLine::False);
+                break;
+            }; 
+
+            if self.machine_st.b == stub_b && term_write_result.var_dict.len() == 0 {
+                // NOTE: only print results on success
+                self.machine_st.fail = false;
+                println!("b == stub_b");
+                matches.push(QueryResolutionLine::False);
+                break;
+            }; 
 
             let mut bindings: BTreeMap<String, Value> = BTreeMap::new();