[m-rev.] for review: add --module option for dice mdb command

Julien Fischer juliensf at cs.mu.OZ.AU
Sun Feb 13 00:44:56 AEDT 2005


On Sat, 12 Feb 2005, Ian MacLarty wrote:

> For review by anyone.
>
> Estimated hours taken: 6
> Branches: main
>
> Add a --module option to the mdb dice command to limit output to a specific
> module or package.
>
Is it possible to add a --exclude-modules option that would exclude
output from specific modules?

> Write out the trace counts even if the program aborts with an exception.
>
s/aborts with an exception/aborts because of an uncaught exception/
(and below)

> Index: browser/dice.m
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/browser/dice.m,v
> retrieving revision 1.1
> diff -u -r1.1 dice.m
> --- browser/dice.m	10 Feb 2005 04:10:27 -0000	1.1
> +++ browser/dice.m	10 Feb 2005 06:08:37 -0000
> @@ -51,7 +51,7 @@
>  :- pred read_trace_counts_list(string::in, read_trace_counts_list_result::out,
>  	io::di, io::uo) is det.
>
> -	% read_dice_to_string(PassFiles, FailFile, SortStr, N, DiceStr,
> +	% read_dice_to_string(PassFiles, FailFile, SortStr, N, Module, DiceStr,
>  	% 	Problem, !IO).
>  	% Read the trace_counts in the list of files in the file named
>  	% PassFiles, interpreting them as passing slices; read the
> @@ -61,13 +61,15 @@
>  	% SortStr can be any combination of the letters "sSpPfP" and
>  	% indicates how the dice is to be sorted.  See the documentation
>  	% for the `dice' command in the user guide for an explaination of the
> -	% sort string.  If there was a problem reading the trace_counts then
> -	% Problem will contain a string describing the problem encountered and
> -	% DiceStr will be the empty string, otherwise Problem will be the
> -	% empty string.
> +	% sort string.  If Module is not the empty string then only labels
> +	% from the named module will be included in the dice string, otherwise
> +	% all modules will be included.  If there was a problem reading the
> +	% trace_counts then Problem will contain a string describing the
> +	% problem encountered and DiceStr will be the empty string, otherwise
> +	% Problem will be the empty string.
>  	%
>  :- pred read_dice_to_string(string::in, string::in, string::in, int::in,
> -	string::out, string::out, io::di, io::uo) is det.
> +	string::in, string::out, string::out, io::di, io::uo) is det.
>
I think that it would be better if Problem had type maybe(string)
and returned yes(ProblemString) if there was a problem and no if there
was no problem.  The approach using an empty string to indicate no
error seems less robust.

> Index: doc/user_guide.texi
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/doc/user_guide.texi,v
> retrieving revision 1.417
> diff -u -r1.417 user_guide.texi
> --- doc/user_guide.texi	10 Feb 2005 04:10:28 -0000	1.417
> +++ doc/user_guide.texi	12 Feb 2005 04:12:30 -0000
> @@ -3391,7 +3391,7 @@
>  Clears the histogram printed by @samp{histogram_exp},
>  i.e.@: sets the counts for all depths to zero.
>  @sp 1
> - at item dice [-p at var{filename}] [-f at var{filename}] [-n at var{num}] [-s[pPfFsS]+] [-o @var{filename}]
> + at item dice [-p at var{filename}] [-f at var{filename}] [-n at var{num}] [-s[pPfFsS]+] [-o @var{filename}] [-m @var{module}]
>  @kindex dice (mdb command)
>  Display a program dice on the screen.
>  @sp 1
> @@ -3499,6 +3499,9 @@
>  will be written to the specified file instead of being displayed on the
>  screen.  Note that the file will be overwritten without warning if it
>  already exists.
> + at sp 1
> +The @samp{-m} or @samp{--module} option limits the output to the given module
> +or package.
Mercury doesn't formally have packages so I would change that to say
"limits the output to the given module and its submodules, if any".

> Index: mdbcomp/prim_data.m
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/mdbcomp/prim_data.m,v
> retrieving revision 1.3
> diff -u -r1.3 prim_data.m
> --- mdbcomp/prim_data.m	10 Feb 2005 04:10:29 -0000	1.3
> +++ mdbcomp/prim_data.m	11 Feb 2005 04:22:15 -0000
> @@ -132,6 +132,12 @@
>  :- pred sym_name_to_string(sym_name::in, string::out) is det.
>  :- func sym_name_to_string(sym_name) = string.
>
> +	% is_submodule(SymName1, SymName2).
> +	% True iff SymName1 is a submodule of SymName2.
> +	% For example mod1.mod2.mod3 is a submodule of mod1.mod2.
> +	%
> +:- pred is_submodule(sym_name::in, sym_name::in) is semidet.
> +
Since this is for use with module names rather sym_names in general
it might be better to declare that as:

:- pred is_submodule(module_name::in, module_name::in) is semidet.

> @@ -187,7 +193,12 @@
>  	sym_name_to_string(ModuleSym, Separator, ModuleName),
>  	string__append_list([ModuleName, Separator, Name], QualName).
>
> +is_submodule(SymName, SymName).
> +is_submodule(qualified(SymName1, _), SymName2) :-
> +	is_submodule(SymName1, SymName2).
> +
I would prefer `SymNameA' and `SymNameB' there.  Having a sequence
of numbered variables makes it looks as though there is some sort
of relationship between them.

> Index: runtime/mercury_trace_base.h
> ===================================================================
> RCS file: /home/mercury1/repository/mercury/runtime/mercury_trace_base.h,v
> retrieving revision 1.43
> diff -u -r1.43 mercury_trace_base.h
> --- runtime/mercury_trace_base.h	10 Feb 2005 04:10:30 -0000	1.43
> +++ runtime/mercury_trace_base.h	11 Feb 2005 03:51:04 -0000
> @@ -110,6 +110,15 @@
>  extern	void	MR_trace_write_label_exec_counts(FILE *fp);
>
>  /*
> +** MR_trace_write_label_exec_counts_to_file does the same job as
> +** MR_trace_write_label_exec_counts, except that it also opens the file.
> +** It's signature allows it to be registered with
s/It's/Its/

Looks good otherwise.

Cheers,
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list