[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