From: Mark Thom Date: Mon, 15 Apr 2019 05:15:59 +0000 (-0600) Subject: make return_from_clause macro respect verify_attributes X-Git-Tag: v0.8.110~100 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=465f2cc6e54d9eb1c4e3c79e16d0bd17e6e664ac;p=scryer-prolog.git make return_from_clause macro respect verify_attributes --- diff --git a/Cargo.toml b/Cargo.toml index 4e2f4029..754d19cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "scryer-prolog" -version = "0.8.53" +version = "0.8.54" authors = ["Mark Thom "] repository = "https://github.com/mthom/scryer-prolog" description = "A modern Prolog implementation written mostly in Rust." diff --git a/src/prolog/lib/builtins.pl b/src/prolog/lib/builtins.pl index 8036284e..b678b367 100644 --- a/src/prolog/lib/builtins.pl +++ b/src/prolog/lib/builtins.pl @@ -76,8 +76,8 @@ Module : Predicate :- current_prolog_flag(Flag, false) :- Flag == bounded, !. current_prolog_flag(bounded, false). -current_prolog_flag(Flag, down) :- Flag == integer_rounding_function, !. -current_prolog_flag(integer_rounding_function, down). +current_prolog_flag(Flag, toward_zero) :- Flag == integer_rounding_function, !. +current_prolog_flag(integer_rounding_function, toward_zero). current_prolog_flag(Flag, Value) :- Flag == double_quotes, !, '$get_double_quotes'(Value). current_prolog_flag(double_quotes, Value) :- '$get_double_quotes'(Value). current_prolog_flag(Flag, _) :- Flag == max_integer, !, '$fail'. diff --git a/src/prolog/macros.rs b/src/prolog/macros.rs index 3ce06c89..9620fa8a 100644 --- a/src/prolog/macros.rs +++ b/src/prolog/macros.rs @@ -178,6 +178,10 @@ macro_rules! try_eval_session { } macro_rules! return_from_clause { ($lco:expr, $machine_st:expr) => {{ + if let CodePtr::VerifyAttrInterrupt(_) = $machine_st.p { + return Ok(()); + } + if $lco { $machine_st.p = CodePtr::Local($machine_st.cp.clone()); } else {