[m-rev.] For review: Trust standard library

Ian MacLarty maclarty at cs.mu.OZ.AU
Wed Nov 10 19:03:09 AEDT 2004


On Wed, Nov 10, 2004 at 05:30:41PM +1100, Julien Fischer wrote:
> 
> On Wed, 10 Nov 2004, Ian MacLarty wrote:
> 
> > For review by anyone.
> >
> > Estimated hours taken: 4
> > Branches: main
> >
> > Trust modules in the Mercury standard library by default in the declarative
> > debugger.
> >
> > Make trusted object id's returned by `trusted' command persistent. Previously
> > each trusted object was identified by its position in the ordered list of
> > trusted objects.  This meant that if an object was removed all objects after
> > the removed object would have their ids decremented, so the user would have to
> > issue a new `trusted' command everytime they wished to remove an object to
> > confirm the id.
> 
> That last sentence is a little unclear.
> 
This meant that if an object was removed all objects after the removed object
in the ordered list of trusted objects would have their ids decremented, so if
the user wanted to then delete another object they'd have to issue another
`trusted' command to get the new id first.  
> >  The behaviour is now consistent with the behaviour of
> > breakpoint ids which keep their id for the life of the breakpoint.
> >
> > Fix generation of online documentation for declarative debugger mdb commands.
> >
> The log message should mention what was wrong with it.
> 
Put the mdb declarative debugger commands in their own section, instead of in
misc to be consistent with the mdb online help categories and so the online
help for the mdb declarative debugger commands is generated properly (the
dd help category wasn't getting any online documentation generated for it).
> > browser/declarative_debugger.m
> > 	Add and export predicate to add the standard library to the set of
> > 	trusted objects.
> >
> > browser/declarative_oracle.m
> > 	Add predicate to add the standard library to the set of trusted
> > 	objects.
> >
> > 	Use bimap to represent set of trusted objects along with each object's
> > 	id (we need to look up objects both ways).
> >
> I suggest changing that to "Use a bimap to ..."
> 
Ok.
> > 	Adjust comment formatting to conform to standard.
> >
> > 	Rename trusted_module_or_predicate type to trusted_object.  Add
> > 	constructor for standard_library to trusted_object type.  Include
> > 	standard library when initialising the set of trusted objects.
> >
> > 	Change predicates adding or removing trusted objects to use new
> > 	persistent object id.
> >
> > 	If a module belongs to the standard library and the standard library
> > 	is trusted then trust the module.
> >
> > compiler/mlds.m
> > 	Import library module since since mercury_std_library_module/1 now
> > 	resides there.
> >
> Shift the message for compiler/mlds.m to after the next one.
> 
Ok
> > compiler/modules.m
> > library/library.m
> > 	Move definition of mercury_std_library_module/1 from modules.m to
> > 	library.m so it can be used by the debugger.  Adjust comment
> > 	accordingly.
> >
> > doc/generate_mdb_doc
> > 	Generate declarative debugger commands documentation.
> >
> > doc/user_guide.texi
> > 	Document `trust std lib' command.  Move mdb declarative debugging
> > 	commands to their own section.
> >
> > tests/debugger/declarative/catch.exp2
> > tests/debugger/declarative/catch.exp3
> > tests/debugger/declarative/catch.inp2
> > tests/debugger/declarative/solutions.exp2
> > tests/debugger/declarative/solutions.inp2
> > 	Untrust the standard library for these tests.
> >
> > tests/debugger/declarative/trust.inp
> > tests/debugger/declarative/trust.exp
> > 	Update test to reflect persistent trusted object ids and trusting of
> > 	standard library.
> >
> > trace/mercury_trace_declarative.c
> > trace/mercury_trace_declarative.h
> > 	Add function to trust the standard library.
> >
> > trace/mercury_trace_internal.c
> > 	Allow user to trust the standard library by issuing a `trust std lib'
> > 	command.
> >
> > Index: browser/declarative_debugger.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/browser/declarative_debugger.m,v
> > retrieving revision 1.40
> > diff -u -r1.40 declarative_debugger.m
> > --- browser/declarative_debugger.m	25 Oct 2004 05:30:17 -0000	1.40
> > +++ browser/declarative_debugger.m	8 Nov 2004 03:54:04 -0000
> > @@ -555,6 +555,17 @@
> >  		Oracle),
> >  	!:Diagnoser = !.Diagnoser ^ oracle_state := Oracle.
> >
> > +:- pred trust_standard_library(diagnoser_state(trace_node_id)::in,
> > +	diagnoser_state(trace_node_id)::out) is det.
> > +
> > +:- pragma export(mdb.declarative_debugger.trust_standard_library(in, out),
> > +	"MR_DD_decl_trust_standard_library").
> > +
> > +trust_standard_library(!Diagnoser) :-
> > +	declarative_oracle.trust_standard_library(!.Diagnoser ^ oracle_state,
> > +		Oracle),
> > +	!:Diagnoser = !.Diagnoser ^ oracle_state := Oracle.
> > +
> >  :- pred remove_trusted(int::in, diagnoser_state(trace_node_id)::in,
> >  	diagnoser_state(trace_node_id)::out) is semidet.
> >
> > Index: browser/declarative_oracle.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/browser/declarative_oracle.m,v
> > retrieving revision 1.27
> > diff -u -r1.27 declarative_oracle.m
> > --- browser/declarative_oracle.m	25 Oct 2004 05:30:18 -0000	1.27
> > +++ browser/declarative_oracle.m	9 Nov 2004 07:44:26 -0000
> > @@ -62,6 +62,10 @@
> >  :- pred add_trusted_pred_or_func(proc_layout::in, oracle_state::in,
> >  	oracle_state::out) is det.
> >
> > +	% Trust all the modules in the Mercury standard library.
> > +	%
> > +:- pred trust_standard_library(oracle_state::in, oracle_state::out) is det.
> > +
> >  	% remove_trusted(N, !Oracle).
> >  	% Removes the (N-1)th trusted object from the set of trusted objects.
> >  	% Fails if there are fewer than N-1 trusted modules (or N < 0).
> > @@ -116,7 +120,8 @@
> >  :- import_module mdb__set_cc.
> >  :- import_module mdb__util.
> >
> > -:- import_module bool, std_util, set, int.
> > +:- import_module map, bool, std_util, set, int, bimap, counter, assoc_list.
> > +:- import_module library.
> >
> >  query_oracle(Questions, Response, Oracle0, Oracle) -->
> >  	{ query_oracle_list(Oracle0, Questions, Answers) },
> > @@ -208,51 +213,71 @@
> >  	).
> >
> >  %-----------------------------------------------------------------------------%
> > -
> > +
> >  :- type oracle_state
> >  	--->	oracle(
> > -			kb_current	:: oracle_kb,
> >  				% Current information about the intended
> >  				% interpretation.  These answers have been
> >  				% given, but have not since been revised.
> > +			kb_current	:: oracle_kb,
> >
> > -			kb_revised	:: oracle_kb,
> >  				% Old information about the intended
> >  				% interpretation.  These answers were given
> >  				% and subsequently revised, but new answers
> >  				% to the questions have not yet been given.
> > +			kb_revised	:: oracle_kb,
> >
> > -			user_state	:: user_state,
> >  				% User interface.
> > +			user_state	:: user_state,
> >
> > -			trusted :: set(trusted_module_or_predicate)
> >  				% Modules and predicates/functions trusted
> > -				% by the oracle.
> > +				% by the oracle. The second argument is an
> > +				% id used to identify an object to remove.
> > +			trusted		:: bimap(trusted_object, int),
> > +
> > +				% Counter to allocate ids to trusted objects
> > +			trusted_id_counter	:: counter
> >  		).
> >
> >  oracle_state_init(InStr, OutStr, Browser, Oracle) :-
> >  	oracle_kb_init(Current),
> >  	oracle_kb_init(Old),
> >  	user_state_init(InStr, OutStr, Browser, User),
> > -	set.init(TrustedModules),
> > -	Oracle = oracle(Current, Old, User, TrustedModules).
> > +	% Trust the standard library by default.
> > +	bimap.set(bimap.init, standard_library, 0, Trusted),
> > +	counter.init(1, Counter),
> > +	Oracle = oracle(Current, Old, User, Trusted, Counter).
> >
> >  %-----------------------------------------------------------------------------%
> >
> > -:- type trusted_module_or_predicate
> > -	--->	all(string) % all predicates/functions in a module
> > -	;	specific(
> > -			pred_or_func,
> > +:- type trusted_object
> > +	--->	module(string) % all predicates/functions in a module
> > +	;	predicate(
> >  			string,		% module name
> > -			string,		% pred or func name
> > +			string,		% pred name
> >  			int		% arity
> > -		).
> > +		)
> > +	;	function(
> > +			string,		% module name
> > +			string,		% function name
> > +			int		% arity including return value
> > +		)
> > +	;	standard_library.
> >
> >  add_trusted_module(ModuleName, !Oracle) :-
> > -	insert(!.Oracle ^ trusted, all(ModuleName), Trusted),
> > -	!:Oracle = !.Oracle ^ trusted := Trusted.
> > +	counter.allocate(Id, !.Oracle ^ trusted_id_counter, Counter),
> > +	(
> > +		bimap.insert(!.Oracle ^ trusted, module(ModuleName), Id,
> > +			Trusted)
> > +	->
> > +		!:Oracle = !.Oracle ^ trusted := Trusted,
> > +		!:Oracle = !.Oracle ^ trusted_id_counter := Counter
> > +	;
> > +		true
> > +	).
> >
> >  add_trusted_pred_or_func(ProcLayout, !Oracle) :-
> > +	counter.allocate(Id, !.Oracle ^ trusted_id_counter, Counter),
> >  	ProcId = get_proc_id_from_layout(ProcLayout),
> >  	(
> >  		ProcId = proc(ModuleName, PredOrFunc, _, Name, Arity, _)
> > @@ -260,71 +285,80 @@
> >  		ProcId = uci_proc(ModuleName, _, _, Name, Arity, _),
> >  		PredOrFunc = predicate
> >  	),
> > -	insert(!.Oracle ^ trusted, specific(PredOrFunc, ModuleName, Name,
> > -		Arity), Trusted),
> > -	!:Oracle = !.Oracle ^ trusted := Trusted.
> > -
> > -remove_trusted(N, !Oracle) :-
> > -	TrustedList = to_sorted_list(!.Oracle ^ trusted),
> > -	index0(TrustedList, N, ObjectToDelete),
> > -	delete_all(TrustedList, ObjectToDelete, NewTrustedList),
> > -	!:Oracle = !.Oracle ^ trusted := sorted_list_to_set(NewTrustedList).
> > -
> > -get_trusted_list(Oracle, CommandFormat, List) :-
> > -	Trusted = to_sorted_list(Oracle ^ trusted),
> >  	(
> > -		CommandFormat = yes,
> > -		foldl(format_trust_command, Trusted, "", List)
> > -	;
> > -		CommandFormat = no,
> > -		foldl(format_trust_display, Trusted, {0, "Trusted Objects:\n"},
> > -			{I, List0}),
> >  		(
> > -			I = 0
> > -		->
> > -			List = "There are no trusted modules, predicates "++
> > -				"or functions.\n"
> > +			PredOrFunc = predicate,
> > +			bimap.insert(!.Oracle ^ trusted, predicate(ModuleName,
> > +				Name, Arity), Id, Trusted)
> >  		;
> > -			List = List0
> > +			PredOrFunc = function,
> > +			bimap.insert(!.Oracle ^ trusted, function(ModuleName,
> > +				Name, Arity), Id, Trusted)
> >  		)
> > +	->
> > +		!:Oracle = !.Oracle ^ trusted := Trusted,
> > +		!:Oracle = !.Oracle ^ trusted_id_counter := Counter
> > +	;
> > +		true
> >  	).
> >
> > -:- pred format_trust_command(trusted_module_or_predicate::in, string::in,
> > -	string::out) is det.
> > -
> > -format_trust_command(all(ModuleName), S, S++"trust "++ModuleName++"\n").
> > -format_trust_command(specific(PredOrFunc, ModuleName, Name, Arity), S,
> > -		S++Command) :-
> > +trust_standard_library(!Oracle) :-
> > +	counter.allocate(Id, !.Oracle ^ trusted_id_counter, Counter),
> >  	(
> > -		PredOrFunc = predicate,
> > -		PredOrFuncStr = "pred*",
> > -		ArityStr = int_to_string(Arity)
> > -	;
> > -		PredOrFunc = function,
> > -		PredOrFuncStr = "func*",
> > -		ArityStr = int_to_string(Arity - 1)
> > -	),
> > -	Command = "trust "++PredOrFuncStr++ModuleName++"."++Name++"/"++
> > -		ArityStr++ "\n".
> > -
> > -:- pred format_trust_display(trusted_module_or_predicate::in, {int,string}::in,
> > -	{int,string}::out) is det.
> > +		bimap.insert(!.Oracle ^ trusted, standard_library, Id,
> > +			Trusted)
> > +	->
> > +		!:Oracle = !.Oracle ^ trusted_id_counter := Counter,
> > +		!:Oracle = !.Oracle ^ trusted := Trusted
> > +	;
> > +		true
> > +	).
> >
> > -format_trust_display(all(ModuleName), {I, S},
> > -	{I + 1, S++int_to_string(I)++": module "++ModuleName++"\n"}).
> > -format_trust_display(specific(PredOrFunc, ModuleName, Name, Arity), {I, S},
> > -		{I + 1, S++Display}) :-
> > +remove_trusted(Id, !Oracle) :-
> > +	bimap.search(!.Oracle ^ trusted, _, Id),
> > +	bimap.delete_value(Id, !.Oracle ^ trusted, Trusted),
> > +	!:Oracle = !.Oracle ^ trusted := Trusted.
> > +
> > +get_trusted_list(Oracle, yes, CommandsStr) :-
> > +	TrustedObjects = bimap.ordinates(Oracle ^ trusted),
> > +	list.foldl(format_trust_command, TrustedObjects, "", CommandsStr).
> > +get_trusted_list(Oracle, no, DisplayStr) :-
> > +	IdToObjectMap = bimap.reverse_map(Oracle ^ trusted),
> > +	map.foldl(format_trust_display, IdToObjectMap, "", DisplayStr0),
> >  	(
> > -		PredOrFunc = predicate,
> > -		PredOrFuncStr = "pred",
> > -		ArityStr = int_to_string(Arity)
> > -	;
> > -		PredOrFunc = function,
> > -		PredOrFuncStr = "func",
> > -		ArityStr = int_to_string(Arity - 1)
> > -	),
> > -	Display = int_to_string(I)++": "++PredOrFuncStr++" "++ModuleName++"."++
> > -		Name++"/"++ArityStr++"\n".
> > +		DisplayStr0 = ""
> > +	->
> > +		DisplayStr = "There are no trusted modules, predicates "++
> > +			"or functions.\n"
> > +	;
> > +		DisplayStr = "Trusted Objects:\n" ++ DisplayStr0
> > +	).
> > +
> > +:- pred format_trust_command(trusted_object::in, string::in,
> > +	string::out) is det.
> > +
> > +format_trust_command(module(ModuleName), S, S++"trust "++ModuleName++"\n").
> > +format_trust_command(predicate(ModuleName, Name, Arity), S, S++Command) :-
> > +	ArityStr = int_to_string(Arity),
> > +	Command = "trust pred*"++ModuleName++"."++Name++"/"++ ArityStr++"\n".
> > +format_trust_command(function(ModuleName, Name, Arity), S, S++Command) :-
> > +	ArityStr = int_to_string(Arity - 1),
> > +	Command = "trust func*"++ModuleName++"."++Name++"/"++ ArityStr++"\n".
> > +format_trust_command(standard_library, S, S++"trust std lib\n").
> >
> I'd leave some space around the ++ operator there. (And elsewhere in this
> diff).
> 
>  +
> > +:- pred format_trust_display(int::in, trusted_object::in, string::in,
> > +	string::out) is det.
> > +
> > +format_trust_display(Id, module(ModuleName), S, S++Display) :-
> > +	Display = int_to_string(Id)++ ": module "++ ModuleName++"\n".
> > +format_trust_display(Id, predicate(ModuleName, Name, Arity), S, S++Display) :-
> > +	Display = int_to_string(Id)++": predicate "++ModuleName++"."++
> > +		Name++"/"++int_to_string(Arity)++"\n".
> > +format_trust_display(Id, function(ModuleName, Name, Arity), S, S++Display) :-
> > +	Display = int_to_string(Id)++": function "++ModuleName++"."++
> > +		Name++"/"++int_to_string(Arity - 1)++"\n".
> > +format_trust_display(Id, standard_library, S, S++Display) :-
> > +	Display = int_to_string(Id)++": the Mercury standard library\n".
> >
> >  %-----------------------------------------------------------------------------%
> >
> > @@ -441,14 +475,22 @@
> >  :- pred trusted(proc_layout::in, oracle_state::in) is semidet.
> >
> >  trusted(ProcLayout, Oracle) :-
> > +	Trusted = Oracle ^ trusted,
> >  	ProcId = get_proc_id_from_layout(ProcLayout),
> >  	(
> >  		ProcId = proc(Module, PredOrFunc, _, Name, Arity, _),
> >  		(
> > -			set.member(all(Module), Oracle ^ trusted)
> > +			bimap.search(Trusted, standard_library, _),
> > +			mercury_std_library_module(Module)
> > +		;
> > +			bimap.search(Trusted, module(Module), _)
> > +		;
> > +			PredOrFunc = predicate,
> > +			bimap.search(Trusted, predicate(Module, Name, Arity),
> > +				_)
> >  		;
> > -			set.member(specific(PredOrFunc, Module, Name, Arity),
> > -				Oracle ^ trusted)
> > +			PredOrFunc = function,
> > +			bimap.search(Trusted, function(Module, Name, Arity), _)
> >  		)
> >  	;
> >  		ProcId = uci_proc(_, _, _, _, _, _)
> > Index: compiler/mlds.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/compiler/mlds.m,v
> > retrieving revision 1.115
> > diff -u -r1.115 mlds.m
> > --- compiler/mlds.m	5 Sep 2004 23:52:25 -0000	1.115
> > +++ compiler/mlds.m	8 Nov 2004 01:42:06 -0000
> > @@ -1740,7 +1740,7 @@
> >  :- import_module parse_tree__error_util.
> >  :- import_module parse_tree__modules.
> >
> > -:- import_module char, int, term, string, require.
> > +:- import_module char, int, term, string, require, library.
> >
> >  %-----------------------------------------------------------------------------%
> >
> > Index: compiler/modules.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/compiler/modules.m,v
> > retrieving revision 1.309
> > diff -u -r1.309 modules.m
> > --- compiler/modules.m	27 Oct 2004 07:41:49 -0000	1.309
> > +++ compiler/modules.m	7 Nov 2004 00:56:51 -0000
> > @@ -54,11 +54,6 @@
> >  	% of the modules in the standard library.
> >  :- pred mercury_std_library_module_name(module_name::in) is semidet.
> >
> > -	% Succeeds iff the string is the (unqualified) name of one of the
> > -	% modules in the Mercury standard library.
> > -	%
> > -:- pred mercury_std_library_module(string::in) is semidet.
> > -
> >  	% module_name_to_file_name(Module, Extension, Mkdir, FileName):
> >  	%	Convert a module name and file extension to the
> >  	%	corresponding file name.  If `MkDir' is yes, then
> > @@ -797,80 +792,6 @@
> >  	mercury_std_library_module(Name).
> >  mercury_std_library_module_name(qualified(unqualified("mercury"), Name)) :-
> >  	mercury_std_library_module(Name).
> > -
> > -mercury_std_library_module("array").
> > -mercury_std_library_module("array2d").
> > -mercury_std_library_module("assoc_list").
> > -mercury_std_library_module("bag").
> > -mercury_std_library_module("benchmarking").
> > -mercury_std_library_module("bimap").
> > -mercury_std_library_module("bintree").
> > -mercury_std_library_module("bintree_set").
> > -mercury_std_library_module("bitmap").
> > -mercury_std_library_module("bool").
> > -mercury_std_library_module("bt_array").
> > -mercury_std_library_module("builtin").
> > -mercury_std_library_module("char").
> > -mercury_std_library_module("construct").
> > -mercury_std_library_module("cord").
> > -mercury_std_library_module("counter").
> > -mercury_std_library_module("deconstruct").
> > -mercury_std_library_module("dir").
> > -mercury_std_library_module("enum").
> > -mercury_std_library_module("eqvclass").
> > -mercury_std_library_module("exception").
> > -mercury_std_library_module("float").
> > -mercury_std_library_module("gc").
> > -mercury_std_library_module("getopt").
> > -mercury_std_library_module("graph").
> > -mercury_std_library_module("group").
> > -mercury_std_library_module("hash_table").
> > -mercury_std_library_module("int").
> > -mercury_std_library_module("integer").
> > -mercury_std_library_module("io").
> > -mercury_std_library_module("lexer").
> > -mercury_std_library_module("library").
> > -mercury_std_library_module("list").
> > -mercury_std_library_module("map").
> > -mercury_std_library_module("math").
> > -mercury_std_library_module("multi_map").
> > -mercury_std_library_module("ops").
> > -mercury_std_library_module("parser").
> > -mercury_std_library_module("pprint").
> > -mercury_std_library_module("pqueue").
> > -mercury_std_library_module("private_builtin").
> > -mercury_std_library_module("profiling_builtin").
> > -mercury_std_library_module("prolog").
> > -mercury_std_library_module("queue").
> > -mercury_std_library_module("random").
> > -mercury_std_library_module("rational").
> > -mercury_std_library_module("rbtree").
> > -mercury_std_library_module("relation").
> > -mercury_std_library_module("require").
> > -mercury_std_library_module("rtti_implementation").
> > -mercury_std_library_module("set").
> > -mercury_std_library_module("set_bbbtree").
> > -mercury_std_library_module("set_ordlist").
> > -mercury_std_library_module("set_unordlist").
> > -mercury_std_library_module("sparse_bitset").
> > -mercury_std_library_module("stack").
> > -mercury_std_library_module("std_util").
> > -mercury_std_library_module("store").
> > -mercury_std_library_module("string").
> > -mercury_std_library_module("table_builtin").
> > -mercury_std_library_module("term").
> > -mercury_std_library_module("term_io").
> > -mercury_std_library_module("term_size_prof_builtin").
> > -mercury_std_library_module("time").
> > -mercury_std_library_module("tree234").
> > -mercury_std_library_module("type_desc").
> > -mercury_std_library_module("varset").
> > -mercury_std_library_module("version_array").
> > -mercury_std_library_module("version_array2d").
> > -mercury_std_library_module("version_bitmap").
> > -mercury_std_library_module("version_hash_table").
> > -mercury_std_library_module("version_store").
> > -mercury_std_library_module("version_types").
> >
> >  module_name_to_search_file_name(ModuleName, Ext, FileName, !IO) :-
> >  	module_name_to_file_name(ModuleName, Ext, yes, no, FileName, !IO).
> > Index: doc/generate_mdb_doc
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/doc/generate_mdb_doc,v
> > retrieving revision 1.7
> > diff -u -r1.7 generate_mdb_doc
> > --- doc/generate_mdb_doc	6 Nov 2002 02:02:25 -0000	1.7
> > +++ doc/generate_mdb_doc	9 Nov 2004 04:22:03 -0000
> > @@ -16,11 +16,12 @@
> >
> >  debug_cmd_path="debug debugger"
> >  for section in interactive forward backward browsing breakpoint \
> > -	i/o parameter help misc exp developer
> > +	i/o parameter help declarative misc exp developer
> >  do
> >  	case $section in
> >  		interactive)	category=queries ;;
> >  		i/o)		category=table_io ;;
> > +		declarative)	category=dd ;;
> >  		*)		category=$section ;;
> >  	esac
> >  	info -f ./mercury_user_guide.info -o $tmp $debug_cmd_path $section
> > Index: doc/user_guide.texi
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/doc/user_guide.texi,v
> > retrieving revision 1.396
> > diff -u -r1.396 user_guide.texi
> > --- doc/user_guide.texi	5 Nov 2004 05:39:07 -0000	1.396
> > +++ doc/user_guide.texi	10 Nov 2004 01:48:39 -0000
> > @@ -2129,6 +2129,7 @@
> >  * I/O tabling commands::
> >  * Parameter commands::
> >  * Help commands::
> > +* Declarative debugging mdb commands::
> >  * Miscellaneous commands::
> >  * Experimental commands::
> >  * Developer commands::
> > @@ -3200,6 +3201,48 @@
> >  @end table
> >
> >  @sp 1
> > + at node Declarative debugging mdb commands
> > + at subsection Declarative debugging mdb commands
> > +
> > + at sp 1
> > + at table @code
> > + at item dd
> > + at c @item dd [--assume-all-io-is-tabled]
> > + at c The --assume-all-io-is-tabled option is for developers only. Specifying it
> > + at c makes an assertion, and if the assertion is incorrect, the resulting
> > + at c behaviour would be hard for non-developers to understand. The option is
> > + at c therefore deliberately not documented.
> > +Starts declarative debugging
> > +using the current event as the initial symptom.
> > +For details, see @ref{Declarative debugging}.
> > + at sp 1
> > + at item trust @var{module-name}|@var{proc-spec}
> > + at kindex trust (mdb command)
> > +Tells the declarative debugger to trust the given module, predicate or
> > +function.
> > + at sp 1
> > +Individual predicates or functions can be trusted by just giving the
> > +predicate or function name.  If there is more than one predicate or function
> > +with the given name then a list of alternatives will be shown.
> > + at sp 1
> > +The entire Mercury standard library can be trusted by issuing a `trust std lib'
> > +command.
> 
> You should mention that the standard library is trusted by default here
> as well.
The entire Mercury standard library can be trusted by issuing a `trust std lib'
command.  The Mercury standard library is trusted by default.
> > + at sp 1
> > +See also `trusted' and `untrust'.
> > + at sp 1
> > + at item trusted
> > + at kindex trusted (mdb command)
> > +Lists all the trusted modules, predicates and functions.  See also `trust'
> > +and `untrust'.
> > + at sp 1
> > + at item untrust @var{num}
> > + at kindex untrust (mdb command)
> > +Removes the object from the list of trusted objects.  @var{num} should
> > +correspond with the number shown in the list produced by issuing a `trusted'
> > +command.  See also `trust' and `trusted'.
> > + at end table
> > +
> > + at sp 1
> >  @node Experimental commands
> >  @subsection Experimental commands
> >
> > @@ -3245,35 +3288,6 @@
> >  Saves current set of breakpoints and the current set of aliases
> >  in the named file as a set of @samp{break} and @samp{alias} commands.
> >  Sourcing the file will recreate the current breakpoints and aliases.
> > - at sp 1
> > - at item dd
> > - at c @item dd [--assume-all-io-is-tabled]
> > - at c The --assume-all-io-is-tabled option is for developers only. Specifying it
> > - at c makes an assertion, and if the assertion is incorrect, the resulting
> > - at c behaviour would be hard for non-developers to understand. The option is
> > - at c therefore deliberately not documented.
> > -Starts declarative debugging
> > -using the current event as the initial symptom.
> > -For details, see @ref{Declarative debugging}.
> > - at sp 1
> > - at item trust [@var{module-name}|@var{proc-spec}]
> > - at kindex trust (mdb command)
> > -Tells the declarative debugger to trust the given module, predicate or
> > -function.  Individual predicates or functions can be trusted by just giving
> > -the predicate or function name.  If there is more than one predicate or
> > -function with the given name then a list of alternatives will be shown.
> > -See also `trusted' and `untrust'.
> > - at sp 1
> > - at item trusted
> > - at kindex trusted (mdb command)
> > -Lists all the trusted modules, predicates and functions.  See also `trust'
> > -and `untrust'.
> > - at sp 1
> > - at item untrust @var{num}
> > - at kindex untrust (mdb command)
> > -Removes the object from the list of trusted objects.  @var{num} should
> > -correspond with the number shown the the list produced by issuing a `trusted'
> > -command.  See also `trust' and `trusted'.
> >  @sp 1
> >  @item quit [-y]
> >  @kindex quit (mdb command)
> > Index: library/library.m
> > ===================================================================
> > RCS file: /home/mercury1/repository/mercury/library/library.m,v
> > retrieving revision 1.74
> > diff -u -r1.74 library.m
> > --- library/library.m	27 Sep 2004 00:44:43 -0000	1.74
> > +++ library/library.m	8 Nov 2004 02:48:33 -0000
> > @@ -18,14 +18,18 @@
> >
> >  :- pred library__version(string::out) is det.
> >
> > +	% Succeeds iff the string is the (unqualified) name of one of the
> > +	% modules in the Mercury standard library.
> > +	%
> > +:- pred mercury_std_library_module(string::in) is semidet.
> > +
> 
> Move the predicate declaration so that this doesn't get included in the
> library reference manual.
> 
--- library/library.m	27 Sep 2004 00:44:43 -0000	1.74
+++ library/library.m	10 Nov 2004 02:10:16 -0000
@@ -18,14 +18,25 @@
 
 :- pred library__version(string::out) is det.
 
+:- implementation.
+
+% Everything below here is not intended to be part of the public interface,
+% and will not be included in the Mercury library reference manual.
+
+:- interface.
+
+	% Succeeds iff the string is the (unqualified) name of one of the
+	% modules in the Mercury standard library.
+	%
+:- pred mercury_std_library_module(string::in) is semidet.
+
 %---------------------------------------------------------------------------%
 
 :- implementation.
 
> >  %---------------------------------------------------------------------------%
> >
> >  :- implementation.
> >
> > -% Note: if you add a new module to this list, you must also a new clause
> > -% to mercury_std_library_module/1 in compiler/modules.m. Conversely, this
> > -% should list all the modules named by mercury_std_library_module, except
> > -% library itself.
> > +% Note: if you add a new module to this list, you must also a new clause to
> > +% mercury_std_library_module/1. Conversely, this should list all the modules
> > +% named by mercury_std_library_module, except library itself.
> >  %
> >  % Please keep both parts of this list in alphabetical order.
> >
> > @@ -139,6 +143,82 @@
> >  	Version = mercury.runtime.Constants.MR_VERSION + "" configured for ""
> >  			+ mercury.runtime.Constants.MR_FULLARCH;
> >  ").
> > +
> 
> That's all for now.
> 
> 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
> --------------------------------------------------------------------------
--------------------------------------------------------------------------
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