[m-rev.] for review: printing of I/O actions in the declarative debugger

Zoltan Somogyi zs at cs.mu.OZ.AU
Wed Oct 30 12:56:56 AEDT 2002


Make it easier to print and browse I/O actions in the declarative debugger.

browser/browser_info.m:
	Add a new component to the debugger's permanent state to record the
	user's preference as to how many I/O actions can be printed with each
	atom. If an atom has this many I/O actions or fewer, they are printed.
	If it has more, only a notice about too many I/O actions to show is
	printed, and the user has to look up the others manually.

browser/browse.m:
	Update the help message and the printing of the current settings
	accordingly.

browser/parse.m:
	Add a new general browser command, "num_io_actions <n>", that allows
	the user to set the value of this new parameter.

browser/declarative_user.m:
	Delete the old, undocumented command "io <action_num>". Replace with
	two new command forms, "print io <from_action_num>[-<to_action_num>]"
	and "browse io <action_num>". "browse io" does what the old "io"
	command did, but using this to print many I/O actions is clumsy;
	that's what "print io" is for.

	For symmetry, also add "print <from_arg_num>[-<to_arg_num>]".

	Respect the new, user-configurable limit on the number of I/O actions
	printed with each atom.

tests/debugger/declarative/tabled_read_decl.{inp,exp}:
	Add some tests of the new functionality.

Zoltan.

cvs diff: Diffing .
cvs diff: Diffing bench
cvs diff: Diffing bench/progs
cvs diff: Diffing bench/progs/compress
cvs diff: Diffing bench/progs/icfp2000
cvs diff: Diffing bench/progs/icfp2001
cvs diff: Diffing bench/progs/nuc
cvs diff: Diffing bench/progs/ray
cvs diff: Diffing bench/progs/tree234
cvs diff: Diffing bindist
cvs diff: Diffing boehm_gc
cvs diff: Diffing boehm_gc/Mac_files
cvs diff: Diffing boehm_gc/cord
cvs diff: Diffing boehm_gc/cord/private
cvs diff: Diffing boehm_gc/doc
cvs diff: Diffing boehm_gc/include
cvs diff: Diffing boehm_gc/include/private
cvs diff: Diffing boehm_gc/tests
cvs diff: Diffing browser
Index: browser/browse.m
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/browse.m,v
retrieving revision 1.31
diff -u -b -r1.31 browse.m
--- browser/browse.m	22 Oct 2002 16:06:35 -0000	1.31
+++ browser/browse.m	28 Oct 2002 14:19:57 -0000
@@ -452,8 +452,8 @@
 "\th              -- help\n",
 "\n",
 "-- settings:\n",
-"--    size; depth; path; format (flat raw_pretty verbose pretty); width; ",
-"lines\n",
+"--    size <n>; depth <n>; path <n>; width <n>; lines <n>; num_io_actions <n>;\n",
+"--    format <flat,raw_pretty,verbose,pretty>; ",
 "--    Paths can be Unix-style or SICStus-style: /2/3/1 or ^2^3^1\n",
 "\n"],
 		HelpMessage) },
@@ -1050,6 +1050,10 @@
 	{ browser_info__get_format(Info, print, no, PrintFormat) },
 	write_string_debugger(Debugger, "Print format is "),
 		print_format_debugger(Debugger, PrintFormat),
+		nl_debugger(Debugger),
+	write_string_debugger(Debugger, "Number of I/O actions printed is: "),
+		write_int_debugger(Debugger,
+			get_num_printed_io_actions(Info ^ state)),
 		nl_debugger(Debugger).
 
 :- pred string_to_path(string, path).
Index: browser/browser_info.m
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/browser_info.m,v
retrieving revision 1.9
diff -u -b -r1.9 browser_info.m
--- browser/browser_info.m	16 Apr 2002 13:54:29 -0000	1.9
+++ browser/browser_info.m	28 Oct 2002 14:17:38 -0000
@@ -97,7 +97,8 @@
 	;	size(int)
 	;	format(portray_format)
 	;	width(int)
-	;	lines(int).
+	;	lines(int)
+	;	num_io_actions(int).
 
 	% Initialise a new browser_info.  The optional portray_format
 	% overrides the default format.
@@ -118,6 +119,9 @@
 		portray_format, format_params).
 :- mode browser_info__get_format_params(in, in, in, out) is det.
 
+:- func browser_info__get_num_printed_io_actions(browser_persistent_state)
+	= int.
+
 %---------------------------------------------------------------------------%
 
 	% An abstract data type that holds persistent browser settings.
@@ -271,7 +275,8 @@
 	--->	browser_persistent_state(
 			print_params		:: caller_params,
 			browse_params		:: caller_params,
-			print_all_params	:: caller_params
+			print_all_params	:: caller_params,
+			num_printed_io_actions	:: int
 		).
 
 :- type caller_params
@@ -305,7 +310,8 @@
 	caller_type_print_defaults(Print),
 	caller_type_browse_defaults(Browse),
 	caller_type_print_all_defaults(PrintAll),
-	State = browser_persistent_state(Print, Browse, PrintAll).
+	State = browser_persistent_state(Print, Browse, PrintAll,
+		num_printed_io_actions_default).
 
 :- pred caller_type_print_defaults(caller_params).
 :- mode caller_type_print_defaults(out) is det.
@@ -340,6 +346,10 @@
 	Pretty = format_params(3, 10, 80, 2),
 	Params = caller_params(DefaultFormat, Flat, RawPretty, Verbose, Pretty).
 
+:- func num_printed_io_actions_default = int.
+
+num_printed_io_actions_default = 20.
+
 browser_info__set_param(MaybeCallerType, F0, Pr0, V0, NPr0, Setting, State0,
 		State) :-
 	affected_caller_types(MaybeCallerType, P, B, A),
@@ -348,6 +358,9 @@
 
 browser_info__set_param(P0, B0, A0, F0, Pr0, V0, NPr0, Setting, State0,
 		State) :-
+	( Setting = num_io_actions(NumIoActions) ->
+		State = State0 ^ num_printed_io_actions := NumIoActions
+	;
 	default_all_yes(P0, B0, A0, P, B, A),
 	default_all_yes(F0, Pr0, V0, NPr0, F, Pr, V, NPr),
 	PParams0 = State0 ^ print_params,
@@ -356,7 +369,9 @@
 	maybe_set_param(P, F, Pr, V, NPr, Setting, PParams0, PParams),
 	maybe_set_param(B, F, Pr, V, NPr, Setting, BParams0, BParams),
 	maybe_set_param(A, F, Pr, V, NPr, Setting, AParams0, AParams),
-	State = browser_persistent_state(PParams, BParams, AParams).
+		State = browser_persistent_state(PParams, BParams, AParams,
+			State0 ^ num_printed_io_actions)
+	).
 
 :- pred affected_caller_types(maybe(browse_caller_type)::in,
 	bool::out, bool::out, bool::out) is det.
@@ -423,9 +438,7 @@
 
 maybe_set_param(no, _, _, _, _, _, Params, Params).
 maybe_set_param(yes, F, Pr, V, NPr, Setting, Params0, Params) :-
-	(
-		Setting = format(NewFormat)
-	->
+	( Setting = format(NewFormat) ->
 		Params = Params0 ^ default_format := NewFormat
 	;
 		Format0 = Params0 ^ default_format,
@@ -451,6 +464,8 @@
 	error("maybe_set_param_2: cannot set format here").
 maybe_set_param_2(yes, width(W), Params, Params ^ width := W).
 maybe_set_param_2(yes, lines(L), Params, Params ^ lines := L).
+maybe_set_param_2(yes, num_io_actions(_), _, _) :-
+	error("maybe_set_param_2: num_io_actions").
 
 :- pred get_caller_params(browser_persistent_state, browse_caller_type,
 		caller_params).
@@ -467,6 +482,9 @@
 get_caller_format_params(Params, raw_pretty, Params ^ raw_pretty_params).
 get_caller_format_params(Params, verbose, Params ^ verbose_params).
 get_caller_format_params(Params, pretty, Params ^ pretty_params).
+
+browser_info__get_num_printed_io_actions(State) =
+	State ^ num_printed_io_actions.
 
 %---------------------------------------------------------------------------%
 
Index: browser/declarative_user.m
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/declarative_user.m,v
retrieving revision 1.22
diff -u -b -r1.22 declarative_user.m
--- browser/declarative_user.m	16 Oct 2002 03:15:20 -0000	1.22
+++ browser/declarative_user.m	29 Oct 2002 22:17:08 -0000
@@ -123,6 +123,12 @@
 			{ User = User2 }
 		)
 	;
+		{ Command = print_arg(From, To) },
+		{ edt_node_trace_atom(Question, TraceAtom) },
+		print_atom_arguments(TraceAtom, From, To, User1),
+		query_user_2([Question | Questions], Skipped, Response,
+			User1, User)
+	;
 		{ Command = browse_io(ActionNum) },
 		{ edt_node_io_actions(Question, IoActions) },
 		% We don't have code yet to trace a marked I/O action.
@@ -131,6 +137,12 @@
 		query_user_2([Question | Questions], Skipped, Response,
 			User2, User)
 	;
+		{ Command = print_io(From, To) },
+		{ edt_node_io_actions(Question, IoActions) },
+		print_chosen_io_actions(IoActions, From, To, User1),
+		query_user_2([Question | Questions], Skipped, Response,
+			User1, User)
+	;
 		{ Command = pd },
 		{ Response = exit_diagnosis(Node) },
 		{ User = User1 }
@@ -205,6 +217,29 @@
 		{ User = User0 }
 	).
 
+:- pred print_chosen_io_actions(list(io_action)::in, int::in, int::in,
+	user_state::in, io__state::di, io__state::uo) is cc_multi.
+
+print_chosen_io_actions(Atom, From, To, User0) -->
+	print_chosen_io_action(Atom, From, User0, OK),
+	( { OK = yes, From + 1 =< To } ->
+		print_chosen_io_actions(Atom, From + 1, To, User0)
+	;
+		[]
+	).
+
+:- pred print_chosen_io_action(list(io_action)::in, int::in, user_state::in,
+	bool::out, io__state::di, io__state::uo) is cc_multi.
+
+print_chosen_io_action(IoActions, ActionNum, User0, OK) -->
+	( { list__index1(IoActions, ActionNum, IoAction) } ->
+		print_io_action(User0, IoAction),
+		{ OK = yes }
+	;
+		io__write_string("No such IO action.\n"),
+		{ OK = no }
+	).
+
 :- pred browse_io_action(io_action::in, maybe(term_path)::out,
 	user_state::in, user_state::out, io__state::di, io__state::uo)
 	is cc_multi.
@@ -246,6 +281,35 @@
 		{ User = User0 }
 	).
 
+:- pred print_atom_arguments(trace_atom::in, int::in, int::in, user_state::in,
+	io__state::di, io__state::uo) is cc_multi.
+
+print_atom_arguments(Atom, From, To, User0) -->
+	print_atom_argument(Atom, From, User0, OK),
+	( { OK = yes, From + 1 =< To } ->
+		print_atom_arguments(Atom, From + 1, To, User0)
+	;
+		[]
+	).
+
+:- pred print_atom_argument(trace_atom::in, int::in, user_state::in, bool::out,
+	io__state::di, io__state::uo) is cc_multi.
+
+print_atom_argument(Atom, ArgNum, User0, OK) -->
+	{ Atom = atom(_, _, Args0) },
+	{ maybe_filter_headvars(chosen_head_vars_presentation, Args0, Args) },
+	(
+		{ list__index1(Args, ArgNum, ArgInfo) },
+		{ ArgInfo = arg_info(_, _, MaybeArg) },
+		{ MaybeArg = yes(Arg) }
+	->
+		print(univ_value(Arg), User0 ^ outstr, print, User0 ^ browser),
+		{ OK = yes }
+	;
+		io__write_string(User0 ^ outstr, "Invalid argument number\n"),
+		{ OK = no }
+	).
+
 :- pred maybe_convert_dirs_to_path(maybe(list(dir)), maybe(term_path)).
 :- mode maybe_convert_dirs_to_path(in, out) is det.
 
@@ -274,6 +338,10 @@
 					% answering.
 	;	browse_io(int)		% Browse the nth IO action before
 					% answering.
+	;	print_arg(int, int)	% Print the nth to the mth arguments
+					% before answering.
+	;	print_io(int, int)	% Print the nth to the mth IO actions
+					% before answering.
 	;	pd			% Commence procedural debugging from
 					% this point.
 	;	abort			% Abort this diagnosis session.
@@ -293,6 +361,9 @@
 		"\ts\tskip\t\tskip this question\n",
 		"\tr\trestart\t\task the skipped questions again\n",
 		"\tb <n>\tbrowse <n>\tbrowse the nth argument of the atom\n",
+		"\tb io <n>\tbrowse io <n>\tbrowse the atom's nth I/O action\n",
+		"\tp <n>\tprint <n>\tprint the nth argument of the atom\n",
+		"\tp io <n>\tprint io <n>\tprint the atom's nth I/O action\n",
 		"\t\tpd\t\tcommence procedural debugging from this point\n",
 		"\ta\tabort\t\t",
 			"abort this diagnosis session and return to mdb\n",
@@ -351,7 +422,6 @@
 cmd_handler("no",	one_word_cmd(no)).
 cmd_handler("in",	one_word_cmd(inadmissible)).
 cmd_handler("inadmissible", one_word_cmd(inadmissible)).
-cmd_handler("io",	browse_io_cmd).
 cmd_handler("s",	one_word_cmd(skip)).
 cmd_handler("skip",	one_word_cmd(skip)).
 cmd_handler("r",	one_word_cmd(restart)).
@@ -364,6 +434,8 @@
 cmd_handler("help",	one_word_cmd(help)).
 cmd_handler("b",	browse_arg_cmd).
 cmd_handler("browse",	browse_arg_cmd).
+cmd_handler("p",	print_arg_cmd).
+cmd_handler("print",	print_arg_cmd).
 
 :- func one_word_cmd(user_command::in, list(string)::in) = (user_command::out)
 	is semidet.
@@ -374,11 +446,38 @@
 
 browse_arg_cmd([Arg]) = browse_arg(ArgNum) :-
 	string__to_int(Arg, ArgNum).
+browse_arg_cmd(["io", Arg]) = browse_io(ArgNum) :-
+	string__to_int(Arg, ArgNum).
 
-:- func browse_io_cmd(list(string)::in) = (user_command::out) is semidet.
+:- func print_arg_cmd(list(string)::in) = (user_command::out) is semidet.
 
-browse_io_cmd([Arg]) = browse_io(ArgNum) :-
-	string__to_int(Arg, ArgNum).
+print_arg_cmd([Arg]) = print_arg(From, To) :-
+	string_to_range(Arg, From, To).
+print_arg_cmd(["io", Arg]) = print_io(From, To) :-
+	string_to_range(Arg, From, To).
+
+:- pred string_to_range(string::in, int::out, int::out) is semidet.
+
+string_to_range(Arg, From, To) :-
+	( string__to_int(Arg, Num) ->
+		From = Num,
+		To = Num
+	;
+		[FirstStr, SecondStr] = string__words(is_dash, Arg),
+		string__to_int(FirstStr, First),
+		string__to_int(SecondStr, Second),
+		( First =< Second ->
+			From = First,
+			To = Second
+		;
+			From = Second,
+			To = First
+		)
+	).
+
+:- pred is_dash(char::in) is semidet.
+
+is_dash('-').
 
 %-----------------------------------------------------------------------------%
 
@@ -529,8 +628,8 @@
 			io__write_int(User ^ outstr, NumIoActions),
 			io__write_string(User ^ outstr, " io actions:")
 		),
-		% XXX the 6 should be configurable
- 		( { NumIoActions < 6 } ->
+ 		{ NumPrinted = get_num_printed_io_actions(User ^ browser) },
+ 		( { NumIoActions =< NumPrinted } ->
 			io__nl(User ^ outstr),
 			list__foldl(print_io_action(User), IoActions)
 		;
Index: browser/parse.m
===================================================================
RCS file: /home/mercury1/repository/mercury/browser/parse.m,v
retrieving revision 1.14
diff -u -b -r1.14 parse.m
--- browser/parse.m	3 Jul 2002 08:25:03 -0000	1.14
+++ browser/parse.m	28 Oct 2002 14:16:43 -0000
@@ -39,6 +39,7 @@
 %		"clipx" num
 %		"clipy" num
 %		"format" fmt
+%		"num_io_actions" num
 %
 %	numlist:
 %		num
@@ -343,6 +344,9 @@
 	; Tok = name("lines") ->
 		Toks = [num(Y)],
 		Setting = lines(Y)
+	; Tok = name("num_io_actions") ->
+		Toks = [num(Y)],
+		Setting = num_io_actions(Y)
 	; Tok = name("format") ->
 		Toks = [Fmt],
 		( Fmt = name("flat") ->
@@ -364,6 +368,7 @@
 
 :- pred show_command(command, io__state, io__state).
 :- mode show_command(in, di, uo) is det.
+
 show_command(ls(Path)) -->
 	io__write_string("ls "),
 	show_path(Path),
@@ -407,6 +412,7 @@
 
 :- pred show_path(path, io__state, io__state).
 :- mode show_path(in, di, uo) is det.
+
 show_path(root_rel(Dirs)) -->
 	io__write_string("/"),
 	show_dirs(Dirs).
@@ -415,6 +421,7 @@
 
 :- pred show_dirs(list(dir), io__state, io__state).
 :- mode show_dirs(in, di, uo) is det.
+
 show_dirs([]) -->
 	io__nl.
 show_dirs([child_num(Num) | Dirs]) -->
@@ -431,6 +438,7 @@
 
 :- pred show_setting(setting, io__state, io__state).
 :- mode show_setting(in, di, uo) is det.
+
 show_setting(depth(Depth)) -->
 	io__write_string("depth "),
 	io__write_int(Depth),
@@ -451,9 +459,14 @@
 	io__write_string("format "),
 	show_format(Fmt),
 	io__nl.
+show_setting(num_io_actions(N)) -->
+	io__write_string("num_io_actions "),
+	io__write_int(N),
+	io__nl.
 
 :- pred show_format(portray_format, io__state, io__state).
 :- mode show_format(in, di, uo) is det.
+
 show_format(flat) -->
 	io__write_string("flat").
 show_format(raw_pretty) -->
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
cvs diff: Diffing compiler/notes
cvs diff: Diffing debian
cvs diff: Diffing deep_profiler
cvs diff: Diffing deep_profiler/notes
cvs diff: Diffing doc
cvs diff: Diffing extras
cvs diff: Diffing extras/aditi
cvs diff: Diffing extras/cgi
cvs diff: Diffing extras/complex_numbers
cvs diff: Diffing extras/complex_numbers/samples
cvs diff: Diffing extras/complex_numbers/tests
cvs diff: Diffing extras/concurrency
cvs diff: Diffing extras/curs
cvs diff: Diffing extras/curs/samples
cvs diff: Diffing extras/curses
cvs diff: Diffing extras/curses/sample
cvs diff: Diffing extras/dynamic_linking
cvs diff: Diffing extras/graphics
cvs diff: Diffing extras/graphics/mercury_opengl
cvs diff: Diffing extras/graphics/mercury_tcltk
cvs diff: Diffing extras/graphics/samples
cvs diff: Diffing extras/graphics/samples/calc
cvs diff: Diffing extras/graphics/samples/maze
cvs diff: Diffing extras/graphics/samples/pent
cvs diff: Diffing extras/lazy_evaluation
cvs diff: Diffing extras/lex
cvs diff: Diffing extras/lex/samples
cvs diff: Diffing extras/logged_output
cvs diff: Diffing extras/moose
cvs diff: Diffing extras/moose/samples
cvs diff: Diffing extras/morphine
cvs diff: Diffing extras/morphine/non-regression-tests
cvs diff: Diffing extras/morphine/scripts
cvs diff: Diffing extras/morphine/source
cvs diff: Diffing extras/odbc
cvs diff: Diffing extras/posix
cvs diff: Diffing extras/quickcheck
cvs diff: Diffing extras/quickcheck/tutes
cvs diff: Diffing extras/references
cvs diff: Diffing extras/references/samples
cvs diff: Diffing extras/references/tests
cvs diff: Diffing extras/stream
cvs diff: Diffing extras/trailed_update
cvs diff: Diffing extras/trailed_update/samples
cvs diff: Diffing extras/trailed_update/tests
cvs diff: Diffing extras/xml
cvs diff: Diffing extras/xml/samples
cvs diff: Diffing java
cvs diff: Diffing java/library
cvs diff: Diffing java/runtime
cvs diff: Diffing library
cvs diff: Diffing profiler
cvs diff: Diffing robdd
cvs diff: Diffing runtime
cvs diff: Diffing runtime/GETOPT
cvs diff: Diffing runtime/machdeps
cvs diff: Diffing samples
cvs diff: Diffing samples/c_interface
cvs diff: Diffing samples/c_interface/c_calls_mercury
cvs diff: Diffing samples/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/c_interface/mercury_calls_c
cvs diff: Diffing samples/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/diff
cvs diff: Diffing samples/muz
cvs diff: Diffing samples/rot13
cvs diff: Diffing samples/solutions
cvs diff: Diffing samples/tests
cvs diff: Diffing samples/tests/c_interface
cvs diff: Diffing samples/tests/c_interface/c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/cplusplus_calls_mercury
cvs diff: Diffing samples/tests/c_interface/mercury_calls_c
cvs diff: Diffing samples/tests/c_interface/mercury_calls_cplusplus
cvs diff: Diffing samples/tests/c_interface/mercury_calls_fortran
cvs diff: Diffing samples/tests/c_interface/simpler_c_calls_mercury
cvs diff: Diffing samples/tests/c_interface/simpler_cplusplus_calls_mercury
cvs diff: Diffing samples/tests/diff
cvs diff: Diffing samples/tests/muz
cvs diff: Diffing samples/tests/rot13
cvs diff: Diffing samples/tests/solutions
cvs diff: Diffing samples/tests/toplevel
cvs diff: Diffing scripts
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
cvs diff: Diffing tests/debugger/declarative
Index: tests/debugger/declarative/tabled_read_decl.exp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/tabled_read_decl.exp,v
retrieving revision 1.4
diff -u -b -r1.4 tabled_read_decl.exp
--- tests/debugger/declarative/tabled_read_decl.exp	22 Oct 2002 04:36:23 -0000	1.4
+++ tests/debugger/declarative/tabled_read_decl.exp	29 Oct 2002 22:15:01 -0000
@@ -22,6 +22,49 @@
 read_char_code('<<c_pointer>>', 50)
 read_char_code('<<c_pointer>>', 51)
 read_char_code('<<c_pointer>>', 10)
+Valid? print 1-2
+'<<c_pointer>>'
+1123
+test('<<c_pointer>>', 1123, _, state('<<c_pointer>>'))
+4 io actions:
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+read_char_code('<<c_pointer>>', 51)
+read_char_code('<<c_pointer>>', 10)
+Valid? p io 1-2
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+test('<<c_pointer>>', 1123, _, state('<<c_pointer>>'))
+4 io actions:
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+read_char_code('<<c_pointer>>', 51)
+read_char_code('<<c_pointer>>', 10)
+Valid? print io 2-1
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+test('<<c_pointer>>', 1123, _, state('<<c_pointer>>'))
+4 io actions:
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+read_char_code('<<c_pointer>>', 51)
+read_char_code('<<c_pointer>>', 10)
+Valid? browse io 4
+browser> print
+read_char_code('<<c_pointer>>', 10)
+browser> set num_io_actions 3
+browser> quit
+test('<<c_pointer>>', 1123, _, state('<<c_pointer>>'))
+4 io actions: too many to show
+Valid? browse 1
+browser> set num_io_actions 10
+browser> quit
+test('<<c_pointer>>', 1123, _, state('<<c_pointer>>'))
+4 io actions:
+read_char_code('<<c_pointer>>', 49)
+read_char_code('<<c_pointer>>', 50)
+read_char_code('<<c_pointer>>', 51)
+read_char_code('<<c_pointer>>', 10)
 Valid? no
 test_2('<<c_pointer>>', 1, 1123, _, state('<<c_pointer>>'))
 4 io actions:
Index: tests/debugger/declarative/tabled_read_decl.inp
===================================================================
RCS file: /home/mercury1/repository/tests/debugger/declarative/tabled_read_decl.inp,v
retrieving revision 1.2
diff -u -b -r1.2 tabled_read_decl.inp
--- tests/debugger/declarative/tabled_read_decl.inp	22 Oct 2002 04:36:24 -0000	1.2
+++ tests/debugger/declarative/tabled_read_decl.inp	29 Oct 2002 11:03:15 -0000
@@ -8,6 +8,16 @@
 finish -n
 print
 dd
+print 1-2
+p io 1-2
+print io 2-1
+browse io 4
+print
+set num_io_actions 3
+quit
+browse 1
+set num_io_actions 10
+quit
 no
 yes
 yes
cvs diff: Diffing tests/dppd
cvs diff: Diffing tests/general
cvs diff: Diffing tests/general/accumulator
cvs diff: Diffing tests/general/structure_reuse
cvs diff: Diffing tests/hard_coded
cvs diff: Diffing tests/hard_coded/exceptions
cvs diff: Diffing tests/hard_coded/purity
cvs diff: Diffing tests/hard_coded/sub-modules
cvs diff: Diffing tests/hard_coded/typeclasses
cvs diff: Diffing tests/invalid
cvs diff: Diffing tests/invalid/purity
cvs diff: Diffing tests/misc_tests
cvs diff: Diffing tests/recompilation
cvs diff: Diffing tests/tabling
cvs diff: Diffing tests/term
cvs diff: Diffing tests/valid
cvs diff: Diffing tests/warnings
cvs diff: Diffing tools
cvs diff: Diffing trace
cvs diff: Diffing util
cvs diff: Diffing vim
cvs diff: Diffing vim/after
cvs diff: Diffing vim/ftplugin
cvs diff: Diffing vim/syntax
--------------------------------------------------------------------------
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