mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-16 06:14:59 +00:00
Estimated hours taken: 120 Branches: main Allow the library to compile in the grade il (high level data). compiler/ml_util.m: Add more types which need to be represented using the low level representation because of how they are handled in the library. compiler/mlds_to_il.m: Remove an XXX which is no longer necessary. Add the heap_pointer type to the list of types whose RTTI is defined by hand. library/exception.m: Move the definition of Exception from the runtime to the local module. This is needed for when univ/0 is no longer represented as a low level type. runtime/mercury_mcpp.cpp: Remove the implementation of Exception that is now in exception.m. library/Mmakefile: The lowlevel Exception type is now defined in the library not the runtime, so add rules to ensure that the foreign code is built in the correct order. library/io.m: Reimplement io__stream as a foreign_type. This makes the code more type safe and avoids problems with the different representation of the io__stream type when using high and low level data. Change io__command_line_arguments so that it throws an exception when we use high level data, as I am yet to work out how to access high level lists. library/rtti_implementation.m: Add a comment that get_subterm doesn't work with high level data. Fix some bugs with the default versions of type_ctor_compare_pred and type_ctor_unify_pred. library/sparse_bitset.m: Remove the foreign_proc implementation of make_bitset_elem as it will not work with both data representations and their is a Mercury implementation. library/string.m: Remove the foreign_proc implementation of all the predicates which manipulate lists as they all have a Mercury implementation, as I am yet to work out how to access high level lists. Add a Mercury implementation for string__join_list. runtime/mercury_mcpp.h: library/array.m: library/builtin.m: library/private_builtin.m: library/type_desc.m: Define and use typedefs where appropiate for type_info/0, type_info/1, comparison_result/0 and univ/0, as there representation may change in the future between using high level and low level data.