]> Repositorios git - scryer-prolog.git/commitdiff
fix verify_attributes_stepper bug: proceed now considered a head instruction
authorMark Thom <[email protected]>
Sat, 12 Oct 2019 09:26:50 +0000 (03:26 -0600)
committerMark Thom <[email protected]>
Sat, 12 Oct 2019 09:26:50 +0000 (03:26 -0600)
Cargo.toml
src/prolog/instructions.rs
src/prolog/lib/atts.pl

index e1f0ef68e23f68e3fa7ac72247db01407034efca..d435e6a8ad8f508ac175cc172d7e39a2f66d8030 100644 (file)
@@ -1,6 +1,6 @@
 [package]
 name = "scryer-prolog"
-version = "0.8.105"
+version = "0.8.106"
 authors = ["Mark Thom <[email protected]>"]
 build = "build.rs"
 repository = "https://github.com/mthom/scryer-prolog"
index e71351bc0144b2c8e625cf3a58373e53876760b5..4a5fc0c879058a6e4749427780aa6ca861d2a7e5 100644 (file)
@@ -151,6 +151,7 @@ impl Line {
             &Line::Cut(_) => true,
             &Line::Fact(_) => true,
             &Line::Query(_) => true,
+            &Line::Control(ControlInstruction::Proceed) => true,
             _ => false,
         }
     }
index eba35d2f70d72f1d11161d7d578e265714ac47f2..3fa4b7f3060e864b43a1fa07a6a9fef03b22113b 100644 (file)
@@ -86,10 +86,13 @@ user:term_expansion(Term0, Terms) :-
     nonvar(Term0),
     Term0 = (:- attribute Atts),
     nonvar(Atts),
-    phrase(put_attrs_var_check, Terms, Terms1),
-    phrase(put_attrs(Atts), Terms1, Terms2),
-    phrase(get_attrs_var_check, Terms2, Terms3),
-    phrase(get_attrs(Atts), Terms3).
+    phrase(expand_terms(Atts), Terms).
+
+expand_terms(Atts) -->
+    put_attrs_var_check,
+    put_attrs(Atts),
+    get_attrs_var_check,
+    get_attrs(Atts).
 
 put_attrs_var_check -->
     { numbervars([Var, Attr], 0, _) },
@@ -105,7 +108,7 @@ get_attrs_var_check -->
 put_attrs(Name/Arity) -->
     put_attr(Name, Arity),
     { numbervars([Var, Attr], 0, _) },
-    [(put_atts(Var, Attr) :- lists:maplist(put_atts(Var), Attr), !)].
+    [(put_atts(Var, Attr) :- lists:maplist(put_atts(Var), Attr))].
 put_attrs((Name/Arity, Atts)) -->
     { nonvar(Atts) },
     put_attr(Name, Arity),