Commit Graph

7 Commits

Author SHA1 Message Date
Julien Fischer
cfeaafd627 Fix a failing test in the Java grade.
tests/invalid/foreign_include_file_missing.{m,err_exp4}:
    Add an additional expected output for Java.
2025-10-30 11:30:27 +11:00
Zoltan Somogyi
4e6a6357c4 Use standard but controllable "can't open file" messages.
compiler/file_util.m:
    Define standard routines for reporting that we couldn't open a file
    for either input or output. Rename the one other predicate in this file
    that the compiler used for that purpose, so that its call sites
    can be redirected to use one of the routines intended for this purpose.

    Give these routines the ability to standardize path names (by removing
    "./" prefixes from relative path names, and removing all directory names
    from adsolute path names) if a new option is given.

compiler/options.m:
    Add that (developer-only) option.

compiler/compile_target_code.m:
compiler/copy_util.m:
compiler/export.m:
compiler/llds_out_file.m:
compiler/mercury_compile_front_end.m:
compiler/mercury_compile_make_hlds.m:
compiler/mercury_compile_middle_passes.m:
compiler/mercury_compile_mlds_back_end.m:
compiler/mlds_to_c_file.m:
compiler/mlds_to_cs_file.m:
compiler/mlds_to_java_file.m:
compiler/module_cmds.m:
compiler/opt_deps_spec.m:
compiler/output_imports_graph.m:
compiler/passes_aux.m:
compiler/system_cmds.m:
compiler/write_deps_file.m:
compiler/xml_documentation.m:
    Replace all call sites to the file_util.m predicates modified
    by this diff. In many cases, it replaces duplicate copies of the
    same code with a call. In some cases, redirect the error message
    to the progress stream, where it belongs.

tests/invalid/Mercury.options:
tests/invalid/foreign_include_file_missing.err_exp3:
    Compile the foreign_include_file_missing test case with the new option,
    and add the expected output in C# grades, which (thanks to the option)
    no longer includes the pathname of the test directory.

tests/invalid/foreign_include_file_missing.m:
    Record what the new .err_exp3 file is for.

tests/warnings/help_text.err_exp:
    Expect the new option.
2025-10-11 12:10:26 +11:00
Zoltan Somogyi
ce3e48d5ed Fix an ninth batch of C# invalid test failures.
tests/invalid/foreign_enum_invalid.{m,err_exp}:
    Delete the "foreign enum in interface" error from this test case,
    moving it to invalid_make_int/bad_in_interface.

tests/invalid/foreign_type_visibility.err_exp2:
tests/invalid/foreign_type_visibility.err_exp3:
    Add these expected outputs for Java and C# respectively.
tests/invalid/foreign_type_visibility.m:
    Document the new expected output files.
tests/invalid/foreign_type_visibility.err_exp:
    Update for changed line numbers.

tests/invalid/foreign_include_file_missing.m:
    Fix indentation.

tests/invalid/Mercury.options:
    Allow a test case to get past the creation of interface files.

tests/invalid_make_int/bad_in_interface.{m,int_err_exp}:
    Move the "foreign enum in interface" part of invalid/foreign_enum_invalid
    here.
2023-10-30 15:54:22 +11:00
Julien Fischer
8a130986d5 Fix a test failure on Windows.
tests/invalid/foreign_include_file_missing.{m,err_exp2}:
    Handle the case where "\" is used as the directory separator.
2023-07-08 16:58:44 +10:00
Peter Wang
88047bbb45 Delete Erlang from tests.
tests/general/float_test.exp3:
tests/general/float_test.m:
tests/general/read_dir_regression.exp4:
tests/general/read_dir_regression.m:
tests/hard_coded/remove_file.exp2:
tests/hard_coded/remove_file.m:
    Delete Erlang backend specific expected outputs.

tests/hard_coded/Mmakefile:
tests/hard_coded/erlang_deconstruct.exp:
tests/hard_coded/erlang_deconstruct.m:
tests/hard_coded/existential_list.exp:
tests/hard_coded/existential_list.m:
tests/valid/Mmakefile:
tests/valid/erl_ite_vars.m:
tests/valid/zf_erlang_bug.m:
    Delete erlang target specific tests.

tests/*:
    Delete Erlang foreign procs and foreign types.
2020-10-27 11:10:11 +11:00
Zoltan Somogyi
fdd141bf77 Clean up the tests in the other test directories.
tests/invalid/*.{m,err_exp}:
tests/misc_tests/*.m:
tests/mmc_make/*.m:
tests/par_conj/*.m:
tests/purity/*.m:
tests/stm/*.m:
tests/string_format/*.m:
tests/structure_reuse/*.m:
tests/submodules/*.m:
tests/tabling/*.m:
tests/term/*.m:
tests/trailing/*.m:
tests/typeclasses/*.m:
tests/valid/*.m:
tests/warnings/*.{m,exp}:
    Make these tests use four-space indentation, and ensure that
    each module is imported on its own line. (I intend to use the latter
    to figure out which subdirectories' tests can be executed in parallel.)

    These changes usually move code to different lines. For the tests
    that check compiler error messages, expect the new line numbers.

browser/cterm.m:
browser/tree234_cc.m:
    Import only one module per line.

tests/hard_coded/boyer.m:
    Fix something I missed.
2015-02-16 12:32:18 +11:00
Peter Wang
14cc6c83e8 Allow external files to be included in foreign_decl and foreign_code.
Allow external files to be included in pragma foreign_decl and pragma
foreign_code declarations:

    :- pragma foreign_decl("Lang", include_file("Path")).
    :- pragma foreign_decl("Lang", local, include_file("Path")).
    :- pragma foreign_code("Lang", include_file("Path")).

where Path may be an absolute path to a file or a path relative to the
directory that contains the source file of the module containing the
declaration.

mmc --make takes include_file into account when computing dependencies.
Mmake is unchanged yet.

compiler/prog_data.m:
	Add types foreign_literal_or_include and foreign_include_file_info.

	Rename "foreign_code" where "foreign_proc" is meant.

compiler/prog_foreign.m:
	Use foreign_literal_or_include where we now want to allow include_file
	directives.

compiler/prog_io_pragma.m:
	Parse include_file forms of pragma foreign_decl and pragma
	foreign_code declarations.

	Rename "foreign_code" where "foreign_proc" is meant.

compiler/prog_io_typeclass.m:
	Use foreign_literal_or_include where we want to allow include_file.

	Make get_item_list_foreign_code return a list of foreign include
	files.

	Rename "foreign_code" where "foreign_proc" is meant.

compiler/file_names.m:
	Add a predicate to get a module's source file name.

	Add make_include_file_path.

	Reorder a predicate within the module.

compiler/file_util.m:
	Add write_include_file_contents, a common predicate for copying
	the contents of an included file into the output.

	Make output_to_file catch and report exceptions from
	write_include_file_contents, and return a success code.

compiler/export.m:
compiler/llds_out_file.m:
compiler/llds_out_util.m:
compiler/mercury_compile_llds_back_end.m:
	Handle include_file directives when generating target code.

	Make output_llds use output_to_file, and propagate its success code.

	Conform to changes.

compiler/mercury_compile_mlds_back_end.m:
compiler/mlds_to_c.m:
compiler/mlds_to_cs.m:
compiler/mlds_to_ilasm.m:
compiler/mlds_to_java.m:
compiler/mlds_to_managed.m:
	Handle include_file directives when generating target code.

	Propagate success codes from output_to_file.

compiler/elds_to_erlang.m:
compiler/mercury_compile_erl_back_end.m:
	Handle include_file directives when generating target code.

	Propagate success code from output_to_file.

	Fix a tiny bug: the "do not edit" comment names the .erl file
	as the source file.

compiler/mercury_compile.m:
	Take account of the success codes now returned by target code
	generators, stopping on failure.

compiler/mercury_to_mercury.m:
	Print out include_file directives.

compiler/module_imports.m:
	Record in module_imports the list of included files.

compiler/make.dependencies.m:
	Add files referenced by include_file directives as dependencies of
	the module's compiled-code target.

compiler/make.module_dep_file.m:
	Introduce .module_dep file format version 2, which has an additional
	field: the list of included files that the module depends on.

	Refactor the .module_dep file parsing code.

compiler/add_pragma.m:
compiler/add_solver.m:
compiler/coverage_profiling.m:
compiler/det_analysis.m:
compiler/erl_call_gen.m:
compiler/erl_code_gen.m:
compiler/foreign.m:
compiler/goal_util.m:
compiler/hlds_goal.m:
compiler/hlds_module.m:
compiler/hlds_out_goal.m:
compiler/intermod.m:
compiler/make_hlds_passes.m:
compiler/make_hlds_warn.m:
compiler/ml_code_gen.m:
compiler/modecheck_goal.m:
compiler/modules.m:
compiler/polymorphism.m:
compiler/pragma_c_gen.m:
compiler/prog_item.m:
compiler/typecheck.m:
compiler/unique_modes.m:
compiler/write_deps_file.m:
	Conform to changes.

	Rename "foreign_code" where "foreign_proc" is meant.

doc/reference_manual.texi:
	Document include_file as a lanaguage extension.

tests/invalid/Mmakefile:
tests/invalid/foreign_include_file_missing.err_exp:
tests/invalid/foreign_include_file_missing.m:
tests/mmc_make/Mmakefile:
tests/mmc_make/inc/code.c:
tests/mmc_make/inc/code.cs:
tests/mmc_make/inc/code.erl:
tests/mmc_make/inc/code.java:
tests/mmc_make/inc/decl.cs:
tests/mmc_make/inc/decl.erl:
tests/mmc_make/inc/decl.h:
tests/mmc_make/inc/decl.java:
tests/mmc_make/include_file.exp:
tests/mmc_make/include_file.m:
	Add test cases.

NEWS:
	Announce the change.
2014-03-31 11:27:57 +11:00