From: Markus Triska Date: Sun, 26 Feb 2023 21:27:06 +0000 (+0100) Subject: ENHANCED: must_be/2: prefer type error over instantiation error X-Git-Tag: v0.9.2~174^2 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=3dc6ed79d2379bfa00fb658209f267a1a8f5e352;p=scryer-prolog.git ENHANCED: must_be/2: prefer type error over instantiation error This addresses #1594. --- diff --git a/src/lib/error.pl b/src/lib/error.pl index 7efb170e..38a93214 100644 --- a/src/lib/error.pl +++ b/src/lib/error.pl @@ -1,5 +1,5 @@ /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Written 2018-2022 by Markus Triska (triska@metalevel.at) + Written 2018-2023 by Markus Triska (triska@metalevel.at) I place this code in the public domain. Use it in any way you want. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ @@ -85,11 +85,11 @@ must_be_(list, Term) :- check_(error:ilist, list, Term). must_be_(type, Term) :- check_(error:type, type, Term). must_be_(boolean, Term) :- check_(error:boolean, boolean, Term). must_be_(term, Term) :- - ( \+ ground(Term) -> - instantiation_error(must_be/2) - ; \+ acyclic_term(Term) -> - type_error(term, Term, must_be/2) - ; true + ( acyclic_term(Term) -> + ( ground(Term) -> true + ; instantiation_error(must_be/2) + ) + ; type_error(term, Term, must_be/2) ). % We cannot use maplist(must_be(character), Cs), because library(lists)