[m-dev.] breaking up modules.m

Julien Fischer juliensf at cs.mu.OZ.AU
Sun Mar 20 15:04:14 AEDT 2005


Currently modules.m is about about 7000 lines long (the second largest
file in the compiler after make_hlds.m, which is ~10000 lines long).

In the interests of maintainability and given the fact that it performs
several distinct tasks anyway, I propose that we break modules.m
up into separate files.  Below is a brief sketch of the interfaces
of the replacement modules.  I would appreciate any comments on
(a) whether this is a good idea, and (b) whether the sketch of the
interfaces of the replacement modules proposed below is acceptable.

Julien.

Note: the following does not include everything exported from modules.m.

parse_tree.module_util
	:- pred mercury_std_library_module_name/1.
	:- pred module_name_to_file_name/6.
	:- pred module_name_to_serach_file_name/5.
	:- pred module_name_to_lib_file_name/7.
	:- pred module_name_to_split_c_file_name/6.
	:- pred module_name_to_split_c_file_pattern/7.
	:- pred fact_table_file_name/7.
	:- pred module_name_to_file_name/2.
	:- pred module_name_to_make_var_name/2
	:- func referenced_dlls/2.
	:- pred create_java_shell_script		% for the java backend
	:- pred list_class_files_for_jar		% for the java backend
	:- pred get_env_classpath
	:- pred get_install_name_option			% needed for shared libraries on Darwin
	:- pred maybe_make_symlink
	:- pred copy_file
	:- pred make_symlink_or_copy_file

parse_tree.module_read
	:- pred read_mod
	:- pred read_mod_if_changed
	:- pred read_mod_ignore_errors
	:- pred read_mod_from_file

parse_tree.module_interfaces
	:- pred make_private_interface
	:- pred make_interface
	:- pred make_short_interface
	:- pred touch_interface_datestamp
	:- pred touch_datestamp
	:- pred update_interface/3
	:- pred update_interface/4
	:- pred pragma_allowed_in_interface
	:- pred check_for_no_exports

parse_tree.module_data
	:- type module_imports
	:- type contains_foreign_code
	:- type has_main
	:- type module_timestamps
	:- type module_timestamp
	:- type read_modules
	:- type read_module
	( + access preds defined for these types )

parse_tree.module_imports
	:- pred grab_imported_modules/11.
	:- pred grab_unqual_imported_modules/8.
	:- pred process_module_private_interface
	:- pred process_module_long_interfaces
	:- pred process_module_short_interfaces
	:- pred process_module_short_interfaces_transitively
	:- pred	process_module_short_interface_and_impls_transitively

parse_tree.module_dep
	:- pred write_dependency_file
	:- pred maybe_read_dependency_file
	:- pred generate_module_dependencies
	:- pred generate_file_dependencies
	:- pred get_dependencies
	:- pred get_implicit_dependencies
	:- pred get_ancestors

--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------



More information about the developers mailing list