Estimated hours taken: 4
Branches: main
Fix the warning we used to get in hlc grades when tabling tuples, and fix
the conceptual error that caused the problem.
compiler/hlds_pred.m:
library/table_builtin.m:
runtime/mercury_tabling.h:
In descriptions of tabling trie steps, replace references to
"user" (as in user-defined types) with "gen" (general types),
since these are also used for other kinds of types, such as tuples
and higher order types.
library/table_builtin.m:
runtime/mercury_tabling_macros.h:
runtime/mercury_tabling_preds.h:
Adopt a more consistent naming scheme for these tabling trie steps,
and for the Mercury predicates and C macros that operate on them.
In table_builtin.m, add a missing Mercury clause for a predicate
usually defined in C.
In mercury_tabling_macros, parameterize the diagnostic message when
doing a lookup step on a general type.
In mercury_tabling_preds, cast general value types to MR_Word,
since they can be some other type originally (e.g. if the general type
value is a tuple).
compiler/table_gen.m:
Conform to the changes above, and switch to using a single nested
switch for generating the lookup code of each step.
compiler/hlds_out.m:
runtime/mercury_table_body.h:
Conform to the changes above.
tests/tabling/expand_tuple2.{m,exp}:
New test case to test tabling of values statically known to be tries.
(The old expand_tuple test case tested tabling polymorphic values in
which the type variable was bound to a tuple, which is not the same
thing.)
tests/tabling/Mmakefile:
Enable the new test case.