browser/browser_info.m:
Avoid using "output" (and "input", for the sake of symmetry)
as function symbols.
browser/debugger_interface.m:
Avoid using "pred" and "func" as function symbols by putting a prefix
before each function symbol in the affected type.
browser/dl.m:
Avoid using "local" (and "global", again for symbols) as function symbols.
profiler/output_prof_info.m:
Avoid using "output" as a type name and as a function symbol.
browser/browse.m:
browser/collect_lib.m:
browser/declarative_user.m:
browser/interactive_query.m:
profiler/generate_output.m:
profiler/output.m:
Conform to the changes above.
extras/morphine/source/browse.op:
extras/morphine/source/collect.op:
extras/morphine/source/current_arg.op:
extras/morphine/source/current_slots.op:
extras/morphine/source/exec_control.op:
extras/morphine/source/forward_move.op:
extras/morphine/source/interactive_queries.op:
Conform to the renames of the function symbols in debugger_interface.m.
Since this code is in Prolog, I cannot be sure that I changed all the
places that should be changed, but that does not matter much.
Since Morphine was designed to work with the Prolog dialects of 1999,
had its last update in 2002, and we never test it, it is very likely
that it hasn't worked in a long time. We keep it around because
(a) it may interest someone, and (b) it doesn't require significant
maintenance. The fact that it does not run may be regrettable, but
it is not actually regretted by many would-be users, or (even) any at all.
(I actually noticed and fixed a bug while doing the above change:
it was a typo in a function symbol name.)
extras/morphine/source/coverage_util.m:
extras/morphine/source/generate_call_site_cov.m:
extras/morphine/source/generate_pred_cov.m:
extras/morphine/source/listing.m:
If we're going to keep these files about, at least make them compile
successfully against the current version of the standard library.
This file-specific setting will override a default setting of expandtabs
in $HOME/.vimrc.
*/Makefile:
*/Mmakefile:
As above.
tests/hard_coded/.gitignore:
Don't ignore the purity subdir. This ignore must have been left over
from when purity.m was a test in hard_coded, not hard_coded/purity,
and it ignored an executable, not a directory.
Estimated hours taken: 10
Branches: main, release
Fix the monitors that were computing coverage rates in Morphine. The
problem was the following. In order to check that two successes and
one failure occur for a multi predicate, I was looking at two exits
and one fail; but this is wrong since, of course, the two exits can
be produced by different calls, and since all multi predicates ends
up with a fail event. To get it right, I need to associate the call
number to exit and fail events. To do that, I maintain at exit ports
the list of call numbers; when an exit event occurs, I consider it as
covered iff the current call number is in the list. On the contrary,
I consider a failure as covered at a fail port iff the current call
number is not in the list. This also holds for semidet and nondet
procedures.
extras/morphine/non-regression-tests/queens.exp:
Update the new expected outputs.
extras/morphine/non-regression-tests/queens.in:
Update the year of the copyrigth message.
extras/morphine/source/call_site_cov.in:
extras/morphine/source/pred_cov.in:
Change the code so that it does what it is supposed to do.
Also use a map instead of a list to store what has to be
covered for each procedure.
extras/morphine/source/generate_pred_cov.m:
extras/morphine/source/generate_call_site_cov.m:
extras/morphine/source/coverage_util.m:
Generate an initialize/1 predicate that uses map instead of lists.
extras/morphine/source/coverage.op:
Coverage monitors now output assoc lists.
Estimated hours taken: 1
NEWS:
library/io.m:
Add `io__input_stream_foldl', `io__input_stream_foldl_io'
and `io__input_stream_foldl2_io', which apply a predicate
to each character of an input stream in turn.
Add a new result type `io__maybe_partial_res' which is
used for operations which can return a partial result
like io__input_stream_foldl* and io__read_file.
tests/general/io_regression.m:
extras/xml/xml.cat.m:
extras/xml/xml.parse.m:
extras/xml/tryit.m:
extras/morphine/source/coverage_util.m:
Fix uses of io__read_file and io__read_file_as_string.
tests/general/Mmakefile:
tests/general/io_foldl.{m,exp}:
Test case.
Estimated hours taken: 3
Branches: main
Change the list constructor from `./2' to `[|]/2'. `./2' will
eventually become the module qualification operator.
library/parser.m:
library/io.m:
library/sparse_bitset.m:
library/std_util.m:
library/term_io.m:
compiler/mercury_to_mercury.m:
compiler/prog_io_dcg.m:
compiler/prog_io_goal.m:
compiler/prog_io_pragma.m:
compiler/prog_io_typeclass.m:
compiler/prog_io_util.m:
browser/interactive_query.m:
extras/moose/grammar.m:
extras/moose/moose.m:
extras/morphine/source/generate_call_site_cov.m:
extras/xml/xml.encoding.m:
samples/muz/higher_order.m:
tests/debugger/declarative/app.m:
tests/dppd/transpose_impl.m:
tests/hard_coded/ground_dd.m:
tests/hard_coded/split_c_files.m:
Change all references to `./2' to use `[|]/2' instead.
compiler/typecheck.m:
Handle `./2' as a special case in `report_error_undef_cons'.
Warn about module list not being imported if `[|]/2' is undefined.
compiler/llds_out.m:
util/mdemangle.c:
profiler/demangle.m:
Add name conversions for `[|]' (f_cons) and `[]' (f_nil).
NEWS:
doc/reference_manual.texi:
w3/tutorial/lists-n-things.m4:
Document the changes.
tests/debugger/{,declarative}/*.exp*:
Update test case results. For some tests the output changed
because they output lists in the non-pretty format. For others,
the output changed because the alphabetical ordering of the
constructors of type `list/1' changed, so the numbering of
the switch branches in the goal paths changed.
therefore I forgot to commit it.
--
Estimated hours taken: .1
branches: main.
extras/morphine/non-regression-tests/Mmakefile:
Filter out some of the compiling outputs generated during the tests
that prevent the non regression test to succeed.
I removed the stop flag in filter.
--
Estimated hours taken: .1
branches: main.
extras/morphine/source/pred_cov.in:
extras/morphine/source/call_site_cov.in:
Remove the fourth argument of filter.
Estimated hours taken: .5
branches: main.
Remove the binary flag used as fourth argument of filter and make
filter a semidet predicate instead. If filter succeeds, it means that
the monitoring process can continue (the flag was set to `continue');
if it fails, it it means that the monitoring process should stop (the
flag was set to `stop').
extras/morphine/source/collect.in:
Remove the fourth argument of filter and make it semidet.
extras/morphine/source/collect.op:
Compile monitors with --no-warn-det-decls-too-lax to avoid
warnings when filter is det (since it is declared semidet).
extras/morphine/source/collect__dynamic_call_graph:
extras/morphine/source/collect__control_flow_graph:
extras/morphine/source/collect__proof_tree:
extras/morphine/non-regression-tests/test_ln:
Remove the fourth argument of filter.
Estimated hours taken: .1
branches: main.
extras/morphine/source/control_flow.op:
Remove the call number from the proof tree as it is useless.
Make dot display the nodes in their order of creation.
tested), but I would like to commit it before I leave on
holidays. Any objection?
--
Estimated hours taken: 40
branches: main.
Add a scenario which provides commands that perform predicate and
call site coverage.
extras/morphine/source/generate_pred_cov.m:
(New file) Program that parses Mercury modules to
generate a monitor that performs predicate coverage.
extras/morphine/source/generate_call_site_cov.m:
(New file) Program that parses Mercury modules to generate
a monitor that performs call site coverage.
extras/morphine/source/coverage_util.m:
(New file) Common stuff to generate_pred_cov.m and
generate_call_site_cov.m
extras/morphine/source/pred_cov.in:
extras/morphine/source/call_site_cov.in:
(New files) Used to generate the call_site_cov and pred_cov
monitors.
extras/morphine/source/coverage.op:
(New file) New scenario that provides call_site_cov/2 and
pred_cov/2 commands, which perform the predicate and call
site coverage of a Mercury module.
extras/morphine/non-regression-tests/queens.in:
extras/morphine/non-regression-tests/queens.exp:
Add a test case for the pred_cov/2 and call_site_cov/2
commands.
extras/morphine/INSTALL-MORPHINE:
compile generate_call_site_cov.m and generate_pred_cov.m
modules when installing morphine.
Estimated hours taken: 10
branches: main.
The results of the proof tree monitor were wrong most programs that
contain all solution predicates.
extras/morphine/source/collect__proof_tree:
Change the type of the goal_succesor_table from
map(call_number, proof_tree) to map(call_number, list(proof_tree)).
This is necessaru because all solutions predicates produce
several proof trees for one goal call.
At fail events, I was not removing the rigth things. Also things
need to be removed at redo events for reasons that are
explained in the comments of htis change.
Estimated hours taken: 20
branches: main.
Add a monitor that computes the program execution proof tree.
extras/morphine/source/collect__proof_tree:
A new monitor that computes the program execution proof tree
(New file).
extras/morphine/source/control_flow.op:
Add support for calling the proof_tree monitor from Morphine.
--
Estimated hours taken: 2
branches: main.
Improve a little bit the code of monitor examples provided with
morphine.
extras/morphine/source/control_flow.op:
extras/morphine/source/collect__control_flow_graph:
extras/morphine/source/collect__dynamic_call_graph:
Use sets instead of lists, and arc/2 instead of edge/2.
Use post_process/2 to remove useless stuff.
extras/morphine/source/collect__dynamic_call_graph:
Extend arc labels with an integer that counts the number of calls.
Use stack library modules instead of list.
Estimated hours taken: .2
branches: main.
extras/morphine/source/collect.op
Fix a bug: type declarations such as ":- type collected_type
---> ..." are parsed ":- type(--->(collected_type ..." by Prolog, not
":- type(collected_type ...".
Estimated hours taken: 7
branches: main.
Add a post-process predicate in collect. This predicate is optional
and automatically added if the collect user do not define it.
browser/collect_lib.m:
Add support for dynamically link the post_process/2 predicates.
extras/morphine/source/collect.in:
extras/morphine/source/collect.op
Add support for automatically add a post_process predicate definition
as well as a accumulator_type definition.
trace/mercury_trace_external.h:
trace/mercury_trace_external.c:
Change the name of the accumulator variable type from
MR_collecting_variable to MR_accumulator variable. Also Add a new
variable type MR_collected_variable that contains the value that
is sent to the collect caller process (instead of
MR_collecting_variable).
Apply (post_process_ptr) (which points to
collect__post_process/2) to the accumulator variable before
sending the collect result.
extras/morphine/non-regression-tests/solutions:
Replace collected_type by accumulator_type.
extras/morphine/non-regression-tests/queens.exp:
extras/morphine/non-regression-tests/queens.in:
extras/morphine/non-regression-tests/test_ln:
Add a new test case entry to test line numbers and the use of
post_process/2 with collect.
Estimated hours taken: 3
branches: main.
Make line numbers available for collect.
browser/collect_lib.m:
Minor comment fixes.
extras/morphine/source/collect.in:
extras/morphine/source/collect.op
Add the line number event attribute.
trace/mercury_trace.h:
trace/mercury_trace.c:
Add the line number as argument of MR_COLLECT_filter.
trace/mercury_trace_external.h:
trace/mercury_trace_external.c:
Put the code that computes the line number in a function called
MR_get_line_number() to be able to call it in mercury_trace.c
to avoid duplicated code.
Estimated hours taken: 3
Branch: main
Add line numbers in Morphine.
trace/mercury_trace_external.c
Modify MR_output_current_slots() so that it takes a MR_Event_Info *
rather than a MR_Label_Layout *. The reason is that I need it to
get the parent of the current event. I need the parent of the current
goal because I want the line number where the call is made,
not the one where the procedure is defined.
Add the line number as an output of ML_DI_output_current_slots_*.
browser/util.m
Define the line_number type.
browser/debugger_interface.m
Add the line number as argument of output_current_slots/13.
extras/morphine/source/current_slots.op
Add the line number as argument of current_attributes/12.
extras/morphine/source/display.op
Add the line number as argument of attribute_display/12 and
of the attribute_display parameter.
extras/morphine/source/event_attributes.op
Define the new event attribute alias.
extras/morphine/non-regression-tests/test_vars.exp:
extras/morphine/non-regression-tests/queens.exp:
Update the expected output of the non-regression test.
extras/morphine/non-regression-tests/queens.in:
Disable the testing of the browser as it is currently broken.
Estimated hours taken: 20
Branch: main
Improve the Morphine documentation.
extras/morphine/source/forward_move.op:
extras/morphine/source/current_arg.op:
extras/morphine/source/current_slots.op:
extras/morphine/source/event_attributes.op:
extras/morphine/source/exec_control.op:
extras/morphine/source/coprocess.op:
extras/morphine/source/interactive_queries.op:
extras/morphine/source/step_by_step.op:
extras/morphine/source/display.op:
extras/morphine/source/source.op:
extras/morphine/source/collect.op:
extras/morphine/source/collect.in:
extras/morphine/source/make_scenario.pl:
Make the documentation more homogeneous; in particular, wrap all
predicates, variables, and atoms with quotes like this:
`...'. Also make the help messages begin with a verb when
possible for consistency.
Fix a few typos.
Fix quite a few grammatical errors.
Estimated hours taken: 0.5
Branches: main
Remove the RM_C mmake variable, which controlled whether the intermediate
`.c' files were removed (now they never are).
The implementation was buggy (it didn't work with parallel makes), and
made it difficult to avoid always recompiling the `.c' file with smart
recompilation.
Mmake.common.in:
configure.in:
README.AIX:
bindist/bindist.build_vars.in:
bindist/bindist.configure.in:
scripts/Mmake.vars.in:
scripts/Mmake.rules:
compiler/modules.m:
tools/bootcheck:
tools/binary_step:
*/Mmakefile:
Remove references to RM_C, DEFAULT_RM_C and LIBRARY_RM_C.
compiler/modules.m:
The `.o' and `.pic_o' file now depends only on the `.c' file,
not on everthing the `.c' file depends on. The extra dependencies
were only needed because the intermediate `.c' file could
be removed by RM_C. This change is needed to avoid recompiling
unchanged `.c' files with smart recompilation.
Estimated hours taken: 3
Morphine non-regression tests were failing because the function
MR_trace_make_var_list() in trace/mercury_trace_external.c now
returns a list of `univ_cons/1' that contains a term whereas it was
previously returning a list of `univ/1' containing a term and its type
separated by a semicolon.
extras/morphine/source/current_arg.op:
Take into account the new behavior of MR_trace_make_var_list(), and
in particular, work around the fact that MR_trace_make_var_list()
no longer outputs variables type.
Also clean-up a little bit the code and rename a couple of
predicates.
extras/morphine/source/non-regression-tests/queens.exp:
Replace `univ' by `univ_cons' when necessary.
Update the `help' and `set' browser commands output.
Test the term browser with `data/3' rather than with `nodiag/3'
since its output is more interesting (i.e., it is a non-empty list).
extras/morphine/source/non-regression-tests/queens.in:
extras/morphine/source/non-regression-tests/queens.exp:
Improve the output a little bit (i.e., add `*** ' for the outputs
that come from `queens.in'; also add a few `nl').
Estimated hours taken: 0.2
The trace_port_type type was not defined in the same order in
morphine/source/ collect.in and in runtime/mercury_trace_base.h. This
problem has already been fixed in browser/util.m, but not in
morphine/source/collect.in.
extras/morphine/source/collect.in:
Make the order of event types the same as in
runtime/mercury_trace_base.h.
Estimated hours taken: 0.1
extras/morphine/source/patch.help:
Tiny cosmetic change (add a space at the end of a line)
to see whether .nocopyright works.
Estimated hours taken: 0.2
Fix a bug in the Morphine on-line help.
extras/morphine/source/patch.help:
The documentation field of Morphine objects can be atoms or strings.
So, make sure that it is a string before applying split_string/4
to it.
extras/morphine/source/.nocopyright:
Add this file to the directory.
Estimated hours taken: 2
Fix a couple of bugs in Morphine-collect.
extras/morphine/source/collect.in:
Import the `list' module as it is needed in collect.m.
extras/morphine/source/collect.op:
Fix a bug: when the dynamic linking betwenn collect.so and
the current execution fails, it does not recompile the collect
module. To force its recompilation, we ``touch'' the collect source
file to make it younger than its corresponding .so file.
Add a #1 directive so that the error message eventually produced
during the compilation of collect.m indicates a line number
that makes sense.
Estimated hours taken: 0.1
In the Morphine regression tests, I am using a little monitor that
retrieves all the solutions that are produced during an
execution. Unfortunately, I was retreiving them at call ports rather
than at exit ports...
Note that I accidentally committed this version of queens.exp when I
committed my previous diff. Sorry about that.
extras/morphine/non-regression-tests/solutions:
Collect the list of arguments at exit ports rather than at
call ports.
extras/morphine/non-regression-tests/queens.in:
extras/morphine/non-regression-tests/queens.exp:
Update the tests expected outputs.
Estimated hours taken: 0.2
Fix a bug in the Morphine on-line help.
extras/morphine/source/patch.help:
The documentation field of Morphine objects can be atoms or strings.
So, make sure that it is a string before applying split_string/4
to it.
Estimated hours taken: 1
Fix a problem that occurs in the Morphine installation process caused by the
system dependent synopsis of patch command.
extras/morphine/source/make_scenario.pl:
Not all the `patch' use the same synopsis. If an attempt to patch
files fails, try with another synopsis. If it fails again, print
an appropriate error message and then abort.
extras/morphine/source/make_scenario.pl:
extras/morphine/INSTALL_MORPHINE:
Print the post-installation message that says to modify the PATH
variable only when the installation process succeeds.
Estimated hours taken: 0.3
extras/morphine/non-regression-tests/Mmakefile:
Filter out the WARNING messages given by Eclipse (about
redefinition of predicates) from the actual output of the
tests.
Estimated hours taken: 1.5
A few fixes for Morphine to make installation easier.
extras/morphine/README:
Point out that there is a tutorial on the Morphine web page,
as otherwise it can be difficult to know what to do.
extras/morphine/INSTALL-MORPHINE:
Use ../../library as the default path for the Mercury library
files, as this is the normal path if you checkout the CVS
module.
extras/morphine/source/make_scenario.pl:
Fix a bug -- use redirection instead of the -i option to patch,
as many systems don't support -i (e.g. taifun, a Solaris box).
Estimated hours taken: 0.5
This change makes the previous one pass the Morphine regression tests (that I
should have run before committing it...).
morphine/non-regression-tests/queens.in:
morphine/non-regression-tests/test_vars.in:
Print a copyright into queens.exp and test_vars.exp to avoid problems
with remote cvs support.
morphine/non-regression-tests/queens.exp:
morphine/non-regression-tests/test_vars.exp:
Update the expected outputs of the regression tests in order to reflect
the previous change (removal of the I/O that were wrapping each new
Mercury program execution).
Estimated hours taken: 1
Replace occurrences of "INSA" by "INSA de Rennes" since Morphine is an "INSA de
Rennes" software, not an "INSA" one.
*:
*/*:
/s/INSA/INSA de Rennes/
scripts/exec_mercury_program:
Remove some useless I/O wrapping of Mercury execution runs.
source/collect.op:
Improve a litte bit the documentation of collect/2.
# Copyright (C) 1999 INRIA/INSA.
# Fix the manual file
ex $1 <<\EOF
%s/_/\\_/g
w
q
EOF
ex $1 <<\EOF
%s/</$<$/g
w
q
EOF
ex $1 <<\EOF
%s/>/$>$/g
w
q
EOF
ex $1 <<\EOF
%s/\\==/$\\backslash$==/g
w
q
EOF
ex $1 <<\EOF
%s/\\=/$\\backslash$=/g
w
q
EOF
ex $1 <<\EOF
%s/=/$=$/g
w
q
EOF
ex $1 <<\EOF
%s/\~/\\verb+\~+/g
w
q
EOFex $1 <<\EOF
Estimated hours taken: 1
Put Morphine under the GNU/GPL licence. Also replace a few remaining
occurrences of Opium-M by Morphine.
morphine/Licence:
File containing a copy of the GNU/GPL licence.
morphine/INSTALL-MORPHINE:
morphine/source/*.pl:
morphine/source/*.op:
Add 2 lines in each file header that state that Morphine is under
the GNU/GPL Licence.
morphine/copyright.txt:
Change this file in such a way that Morphine is now under GNU/GPL.
morphine/INSTALL-MORPHINE:
morphine/README:
morphine/source/load_morphine.pl:
morphine/source/load_morphine.pl:
morphine/source/morphine_kernel.op
Replace a few remaining occurrences of Opium-M by Morphine.
Estimated hours taken: 6
(Committed by fjh on behalf of Erwan Jahier.)
morphine/*:
morphine/non_regression_tests/*:
morphine/source/*:
Rename all occurrences of Opium-M by Morphine.
morphine/source/:
Rename opium_m_kernel.op into morphine_kernel.op, load_opium.pl
into load_morphine.pl and load_opium_without_banner.pl into
load_morphine_without_banner.pl.
Estimated hours taken: 1000
Add Opium-M in the extras. (committed on behalf of Erwan Jahier).
extras/opium_m/copyright.txt:
The copyright for Opium-M.
extras/opium_m/VERSION:
extras/opium_m/README:
extras/opium_m/opium-mode.el:
An emacs mode designed to write opium scenario.
extras/opium_m/INSTALL-OPIUM-M:
Opium-M installation script.
extras/opium_m/source/interactive_queries.op:
extras/opium_m/source/browse.op:
extras/opium_m/source/control_flow.op:
extras/opium_m/source/coprocess_M.op:
extras/opium_m/source/opium_kernel_M.op:
extras/opium_m/source/current_arg_M.op:
extras/opium_m/source/current_slots_M.op:
extras/opium_m/source/display_M.op:
extras/opium_m/source/source_M.op:
extras/opium_m/source/event_attributes_M.op:
extras/opium_m/source/step_by_step_M.op:
extras/opium_m/source/exec_control_M.op:
extras/opium_m/source/forward_move_M.op:
extras/opium_m/source/load_Opium-M.pl:
extras/opium_m/source/make_scenario-M.pl:
extras/opium_m/source/load_Opium-M_without_banner.pl:
extras/opium_m/source/load_scenario-M.pl:
The Opium-M source files.
extras/opium_m/source/partch.autoload:
extras/opium_m/source/partch.interface:
extras/opium_m/source/partch.parameter:
extras/opium_m/source/partch.scenario_handler:
extras/opium_m/source/partch.error:
extras/opium_m/source/partch.types:
extras/opium_m/source/partch.translate:
extras/opium_m/source/partch.util.pl:
extras/opium_m/source/partch.make:
extras/opium_m/source/partch.scenario:
Patches to create the scenario handler for Opium-M. autoload.op,
etc. are part of the Eclipse distribution; to avoid licensing
issues, we copy thoses files from the Eclipse installation
directory during the installation and then we patch them using
those files.
extras/opium_m/non-regression-tests/*:
Non regression tests for Opium-M.
extras/opium_m/non-regression-tests/queens.m:
extras/opium_m/non-regression-tests/test_vars.m:
extras/opium_m/non-regression-tests/test_listing.m:
Mercury files that are tested.
extras/opium_m/non-regression-tests/browse.in:
extras/opium_m/non-regression-tests/queens.in:
extras/opium_m/non-regression-tests/test_vars.in:
Input of the non regression tests.
extras/opium_m/non-regression-tests/queens.exp:
extras/opium_m/non-regression-tests/test_vars.exp:
extras/opium_m/non-regression-tests/listing_output.exp:
Expected output of the non regression tests.
extras/opium_m/non-regression-tests/runtests:
extras/opium_m/non-regression-tests/Mmakefile:
To perform the non regression tests.
extras/opium_m/non-regression-tests/Mmake.common:
extras/opium_m/non-regression-tests/shutdown:
extras/opium_m/non-regression-tests/startup:
extras/opium_m/non-regression-tests/handle_options:
Those files are copied from the Mercury tests repository.
extras/opium_m/scripts/exec_mercury_program:
Script that is used to run Mercury programs under the control of
Opium-M.
extras/opium_m/scripts/fixmanual:
Script that patch the output of `manual' command (which automaticly
generates the Opium-M Reference Manual).