[m-rev.] for review: Declare rtti_implementation.functor_number_cc as cc_nondet.
Peter Wang
novalazy at gmail.com
Tue Oct 27 14:51:18 AEDT 2020
rtti_implementation.m:
As above.
deconstruct.m:
Remove now unnecessary pragma no_determinism_warning.
---
library/deconstruct.m | 5 -----
library/rtti_implementation.m | 6 +++---
2 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/library/deconstruct.m b/library/deconstruct.m
index d8192874f..069eef60a 100644
--- a/library/deconstruct.m
+++ b/library/deconstruct.m
@@ -419,11 +419,6 @@ SUCCESS_INDICATOR = (FunctorNumber >= 0);
functor_number(_Term, _FunctorNumber, _Arity) :-
private_builtin.sorry("deconstruct.functor_number").
- % This is needed because rtti_implementation.functor_number_cc
- % is currently declared semidet instead of cc_nondet.
- %
-:- pragma no_determinism_warning(functor_number_cc/3).
-
:- pragma foreign_proc("C",
functor_number_cc(Term::in, FunctorNumber::out, Arity::out),
[will_not_call_mercury, thread_safe, promise_pure],
diff --git a/library/rtti_implementation.m b/library/rtti_implementation.m
index e7d1b8f82..1654817cd 100644
--- a/library/rtti_implementation.m
+++ b/library/rtti_implementation.m
@@ -123,8 +123,7 @@
is cc_multi.
:- mode deconstruct(in, in, out, out, out, out) is cc_multi.
-:- pred functor_number_cc(T::in, int::out, int::out)
- is semidet. % conceptually committed-choice
+:- pred functor_number_cc(T::in, int::out, int::out) is cc_nondet.
:- pred univ_named_arg(T, noncanon_handling, string, univ).
:- mode univ_named_arg(in, in(do_not_allow), in, out) is semidet.
@@ -2731,7 +2730,8 @@ functor_number_cc(Term, FunctorNumber, Arity) :-
include_details_cc, _Functor, Ordinal, Arity, _Arguments)
),
Ordinal >= 0,
- type_ctor_search_functor_number_map(TypeCtorInfo, Ordinal, FunctorNumber).
+ type_ctor_search_functor_number_map(TypeCtorInfo, Ordinal, FunctorNumber0),
+ cc_multi_equal(FunctorNumber0, FunctorNumber).
:- pred deconstruct_2(T, type_info, type_ctor_info, type_ctor_rep,
noncanon_handling, string, int, int, list(univ)).
--
2.28.0
More information about the reviews
mailing list