Files
mercury/compiler/check_hlds.m
Zoltan Somogyi 99647fbafe Carve four new modules out of typecheck_errors.m.
The resulting modules have much better cohesion.

compiler/typecheck_error_overload.m:
    New module containing predicates that report type overloading errors.

compiler/typecheck_error_undef.m:
    New module containing predicates that report references to undefined
    predicates, functions, data constructors, and events.

compiler/typecheck_error_type_assign.m:
    New module containing predicates that print and process type_assigns
    and args_type_assigns.

compiler/typecheck_error_util.m:
    New module containing general utility predicates for dealing with
    type errors.

compiler/check_hlds.m:
compiler/notes/compiler_design.html:
    Include and document the new modules.

compiler/typecheck_errors.m:
    Delete the code that this diff moves to the new modules.

    Reorder the remaining predicates to put related predicates
    next to each other. Give some predicates new names to reflect
    these groupings.

    Mark as such one predicate that has been unused for a while.

    Use different names for variables used for different purposes.

compiler/typecheck.m:
    Conform to the changes in predicate names.

    Move some utility predicates to the end of the module.
2022-10-17 18:29:42 +11:00

150 lines
5.0 KiB
Mathematica

%-----------------------------------------------------------------------------%
% vim: ft=mercury ts=4 sw=4 et
%-----------------------------------------------------------------------------%
% Copyright (C) 2002-2006, 2009-2010 The University of Melbourne.
% Copyright (C) 2015 The Mercury team.
% This file may only be copied under the terms of the GNU General
% Public License - see the file COPYING in the Mercury distribution.
%-----------------------------------------------------------------------------%
%
% check_hlds: semantic analysis and error checking (the "front end" HLDS pass).
:- module check_hlds.
:- interface.
%-----------------------------------------------------------------------------%
% Type checking.
%:- module type_analysis.
:- include_module check_typeclass.
:- include_module check_for_missing_type_defns.
:- include_module check_promise.
:- include_module old_type_constraints.
:- include_module post_typecheck.
:- include_module pre_typecheck.
:- include_module purity.
:- include_module resolve_unify_functor.
:- include_module type_constraints.
:- include_module type_assign.
:- include_module type_util.
:- include_module typecheck.
:- include_module typecheck_debug.
:- include_module typecheck_errors.
:- include_module typecheck_error_overload.
:- include_module typecheck_error_type_assign.
:- include_module typecheck_error_undef.
:- include_module typecheck_error_util.
:- include_module typecheck_info.
:- include_module typecheck_msgs.
:- include_module typeclasses.
%:- end_module type_analysis.
% Implementation-defined literals.
:- include_module implementation_defined_literals.
% Populating proc_infos from the clauses.
:- include_module clause_to_proc.
% Polymorphism transformation.
:- include_module introduce_exists_casts.
:- include_module polymorphism.
:- include_module polymorphism_clause.
:- include_module polymorphism_goal.
:- include_module polymorphism_info.
:- include_module polymorphism_lambda.
:- include_module polymorphism_post_copy.
:- include_module polymorphism_type_class_info.
:- include_module polymorphism_type_info.
% Preprocessing user insts in the inst table for mode analysis.
:- include_module inst_user.
% Mode analysis.
%:- module mode_analysis.
% The current mode analysis system, which is based (quite loosely)
% on the idea of abtract interpretation.
:- include_module delay_info.
:- include_module inst_abstract_unify.
:- include_module inst_lookup.
:- include_module inst_match.
:- include_module inst_merge.
:- include_module inst_mode_type_prop.
:- include_module inst_test.
:- include_module inst_util.
:- include_module mode_comparison.
:- include_module mode_debug.
:- include_module mode_errors.
:- include_module mode_info.
:- include_module mode_test.
:- include_module mode_top_functor.
:- include_module mode_util.
:- include_module modecheck_call.
:- include_module modecheck_coerce.
:- include_module modecheck_conj.
:- include_module modecheck_goal.
:- include_module modecheck_unify.
:- include_module modecheck_util.
:- include_module modes.
:- include_module proc_requests.
:- include_module recompute_instmap_deltas.
:- include_module unify_proc.
:- include_module unique_modes.
% The following modules implement the first (robdd-based)
% prototype constraint based mode checker, which was never completed.
:- include_module mode_constraint_robdd.
:- include_module mode_constraints.
:- include_module mode_ordering.
% The following modules implement the second (propagation-based)
% prototype constraint based mode checker, which was never completed.
:- include_module abstract_mode_constraints.
:- include_module build_mode_constraints.
:- include_module mcsolver.
:- include_module ordering_mode_constraints.
:- include_module prop_mode_constraints.
%:- end_module mode_analysis.
% A pass that can sometimes make the result of mode analysis
% look and behave better.
:- include_module delay_partial_inst.
% Indexing and determinism analysis.
:- include_module cse_detection.
:- include_module det_analysis.
:- include_module det_report.
:- include_module det_util.
:- include_module switch_detection.
% Stratification.
:- include_module stratify.
% Order independent state update pragmas.
:- include_module oisu_check.
% Expand try goals.
:- include_module try_expand.
% Check the information in format_call pragmas.
:- include_module check_pragma_format_call.
% Warnings about simple code.
:- include_module simplify.
% Warnings about insts with no matching types.
:- include_module inst_check.
% Warnings about unused imports.
:- include_module unused_imports.
% Warnings about bad programming style.
:- include_module style_checks.
% Output XML representation useful for documentation of module.
:- include_module xml_documentation.
%-----------------------------------------------------------------------------%
:- end_module check_hlds.
%-----------------------------------------------------------------------------%