From 8c4c70b0896012920d29eab87cca82eca1a50f1d Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sat, 12 Oct 2019 03:26:50 -0600 Subject: [PATCH] fix verify_attributes_stepper bug: proceed now considered a head instruction --- Cargo.toml | 2 +- src/prolog/instructions.rs | 1 + src/prolog/lib/atts.pl | 13 ++++++++----- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e1f0ef68..d435e6a8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scryer-prolog" -version = "0.8.105" +version = "0.8.106" authors = ["Mark Thom "] build = "build.rs" repository = "https://github.com/mthom/scryer-prolog" diff --git a/src/prolog/instructions.rs b/src/prolog/instructions.rs index e71351bc..4a5fc0c8 100644 --- a/src/prolog/instructions.rs +++ b/src/prolog/instructions.rs @@ -151,6 +151,7 @@ impl Line { &Line::Cut(_) => true, &Line::Fact(_) => true, &Line::Query(_) => true, + &Line::Control(ControlInstruction::Proceed) => true, _ => false, } } diff --git a/src/prolog/lib/atts.pl b/src/prolog/lib/atts.pl index eba35d2f..3fa4b7f3 100644 --- a/src/prolog/lib/atts.pl +++ b/src/prolog/lib/atts.pl @@ -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), -- 2.54.0