Estimated hours taken: 14
Branches: main
Change the compiler and tools so that `.' and not `:' is now used as the
module separator in all output.
Infix `.' now has associativity yfx and priority 10.
NEWS:
Report the change.
configure.in:
Amend the test for an up-to-date Mercury compiler to check whether
it recognises `.' as a module qualifier.
compiler/code_gen.m:
compiler/error_util.m:
compiler/hlds_out.m:
compiler/prog_out.m:
compiler/prog_util.m:
compiler/rl_exprn.m:
compiler/rl_gen.m:
compiler/source_file_map.m:
compiler/unused_args.m:
library/io.m:
library/rtti_implementation.m:
library/type_desc.m:
runtime/mercury_debug.c:
runtime/mercury_deconstruct.c:
runtime/mercury_stack_trace.c:
Change `:' to `.' as module separator for output.
compiler/mercury_to_mercury.m:
compiler/prog_io_typeclass.m:
As above.
Fixed a bug where `.' was not being recognised as a module separator.
doc/reference_manual.texi:
Report the change.
library/term_io.m:
Ensure that infix `.' is written without surrounding spaces.
tests/hard_coded/dot_separator.m:
tests/hard_coded/dot_separator.exp:
tests/hard_coded/Mmakefile:
Test case added.
Estimated hours taken: 10
Branches: main
Improve variable naming in the debugger. Where possible, use
the user's argument names rather than `HeadVar__N'.
compiler/clause_to_proc.m:
Use the user's names for the arguments of
`:- pragma foreign_proc' procedures.
compiler/simplify.m:
When performing excess assignment elimination with `--trace deep',
don't replace a variable with a meaningful name with `HeadVar__N'
or an unnamed variable.
compiler/trace_params.m:
Add a predicate `trace_level_needs_meaningful_var_names'
for use by simplify.m.
compiler/typecheck.m:
For predicates with a single clause, attempt to replace the
`HeadVar__N' variables with the user's original head variables.
trace/mercury_trace_declarative.c:
trace/mercury_trace_vars.c:
Don't assume head variables have names of the form `HeadVar__N'.
Print the argument number when printing the names of
head variables.
tests/debugger/browser_test.inp:
tests/debugger/completion.inp:
Change names of variables in `print' commands.
tests/debugger/*.exp:
tests/debugger/*.exp2:
tests/debugger/declarative/dependency.exp:
tests/invalid/aditi_errors.err_exp:
tests/invalid/mode_inf.err_exp:
tests/invalid/record_syntax_errors.err_exp:
Update expected output.
Estimated hours taken: 0.5
tests/debugger/Mmakefile:
tests/debugger/declarative/Mmakefile:
Strip away goal paths from exception events in the test cases that
generate them, because different optimization levels cause different
goals paths to be associated with exceptions.
tests/debugger/*.exp{,2}:
tests/debugger/declarative/*.exp{,2}:
Strip away goal paths from exception events in the expected outputs
of those test cases.
Estimated hours taken: 0.2
tests/debugger/*.exp2:
tests/debugger/declarative/*.exp2:
Update the expected output for these test cases in debug grades,
after Zoltan's recent change to `retry'.
Estimated hours taken:
tests/debugger/exception_cmd.*:
New test case to test the "exception" command.
tests/debugger/exception_vars.*:
Put this test case back the way it was.
Mmakefile:
Enable the new test case.
Estimated hours taken: 0.5
Add a new debugger command, excp, that continues forward execution until it
reaches an exception event (or the program exits). This command was requested
by MC.
doc/user_guide.texi:
Document the new command.
trace/mercury_trace.[ch]:
Add a forward movement operation that stops only at the first exception
event.
trace/mercury_trace_internal.c:
Implement the excp command using the new operation.
tests/debugger/exception_vars.{inp,exp,exp2}:
Test the operation of the new command.
tests/debugger/mdb_command_test.inp:
Test the documentation of the new command.
Estimated hours taken: 0.25
tests/debugger/exception_vars.inp:
tests/debugger/exception_vars.exp:
tests/debugger/exception_vars.exp2:
Add "echo on" at the start of the test case,
so that it gets the right results when the
compiler is configured without readline support.
Estimated hours taken: 0.25
tests/debugger/exception_vars.exp2:
Add a `.exp2' file for this test case, since the
event numbers differ depending on whether it is
compiled in debug grade or not.
Estimated hours taken: 3
Fix two related bugs in the debugger. The first was that the code in jumpopt.m
for preventing the redirecting of call returns away from labels with layout
structures was only partially effective, since some call return sites have
their layout structures generated only *after* optimization. The second bug
was that the exception events generated by library/exception.m took the label
layouts of call return sites within a predicate and passed them to MR_trace
as if they were the layouts of compiler-generated trace events. However,
while at compiler-generated trace events, all the variables mentioned in the
associated layout structure are supposed to be live, at return sites only
the variables stored in stack slots are live.
compiler/jumpopt.m:
Do not redirect call returns if execution tracing is enabled.
compiler/optimize.m:
Pass the trace level to jumpopt.m.
trace/mercury_trace_vars.[ch]:
Remember the port type of the event, and do not consider the registers
to contain valid contents even at ancestor level zero if the port type
is exception.
trace/mercury_trace_{in,ex}ternal.c:
Pass the port type to mercury_trace_vars.c.
tests/debugger/exception_vars.{m,inp,exp,exp2}:
Regression test for the fixed bugs. The .exp2 file is not yet filled
in.
tests/debugger/Mmakefile:
Enable the new test case.