From 465f2cc6e54d9eb1c4e3c79e16d0bd17e6e664ac Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sun, 14 Apr 2019 23:15:59 -0600 Subject: [PATCH] make return_from_clause macro respect verify_attributes --- Cargo.toml | 2 +- src/prolog/lib/builtins.pl | 4 ++-- src/prolog/macros.rs | 4 ++++ 3 files changed, 7 insertions(+), 3 deletions(-) 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 { -- 2.54.0