[m-rev.] for review: .decldebug

Zoltan Somogyi zs at cs.mu.OZ.AU
Tue Aug 20 16:39:56 AEST 2002


On 19-Aug-2002, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> > - Add a new grade component, called something like .decl or .decldebug,
> > [... for declarative debugging ...]
> 
> I think that is a good idea.
> 
> I prefer the latter name.

For review by anyone.

I modified all the files that mercury_grade.h says should be modified when
adding a new grade, except mercury_compile.m, because I don't see anything
in there that needs to be modified. Anyone know why it is included in the list
in mercury_grade.h?

Zoltan.

------------------------------------------------------------------------

Add a new grade component, .decldebug. It is as proposed on mercury-developers,
minus the implications about I/O tabling. Those will come later.

compiler/options.m:
	Add a new option, --decl-debug, that switches on declarative debugging.

compiler/trace_params.m:
	The procedure that converts strings representing trace levels to trace
	levels themselves now has an extra argument, which gives the value of
	the --decl-debug option. If set, it raises the minimum trace level,
	and turn explicitly specifying trace levels `shallow' and `deep'
	into errors (since they are not sufficient for declarative debugging).

compiler/handle_options.m:
	Pass the value of the --decl-debug option to trace_params, and handle
	the errors that may result. Handle the implications of --decl-debug.

runtime/mercury_conf_params.h:
	Document MR_DECL_DEBUG, which is defined iff the grade is a .decldebug
	grade.

runtime/mercury_grade.h:
	Take MR_DECL_DEBUG into account when computing the grade component
	related to debugging.

scripts/init_grade.sh-subr:
scripts/parse_grade_options.sh-subr:
scripts/final_grade.sh-subr:
scripts/canonical_grade.sh-subr:
scripts/mgnuc.in:
scripts/ml.in:
	Add a new shell variable, decl_debug, to represent the value of
	MR_DECL_DEBUG, and handle it as appropriate.

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
cvs diff: Diffing bytecode
cvs diff: Diffing compiler
Index: compiler/handle_options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/handle_options.m,v
retrieving revision 1.147
diff -u -b -r1.147 handle_options.m
--- compiler/handle_options.m	2002/08/12 02:07:07	1.147
+++ compiler/handle_options.m	2002/08/20 06:31:43
@@ -169,8 +169,8 @@
                     { TagsMethod0 = string(TagsMethodStr) },
                     { convert_tags_method(TagsMethodStr, TagsMethod) }
             ->
-                    { map__lookup(OptionTable,
-                        fact_table_hash_percent_full, PercentFull) },
+                { map__lookup(OptionTable, fact_table_hash_percent_full,
+                    PercentFull) },
                     (
                         { PercentFull = int(Percent) },
                         { Percent >= 1 },
@@ -185,12 +185,17 @@
                             { map__lookup(OptionTable, trace, Trace) },
                             { map__lookup(OptionTable, require_tracing,
                                 RequireTracingOpt) },
+                        { map__lookup(OptionTable, decl_debug,
+                            DeclDebugOpt) },
                             (
                                 { Trace = string(TraceStr) },
                                 { RequireTracingOpt = bool(RequireTracing) },
+                            { DeclDebugOpt = bool(DeclDebug) },
                                 { convert_trace_level(TraceStr, RequireTracing,
-                                    TraceLevel) }
+                                DeclDebug, MaybeTraceLevel) }
                             ->
+                            (
+                                { MaybeTraceLevel = yes(TraceLevel) },
                                 { map__lookup(OptionTable, suppress_trace,
                                     Suppress) },
                                 (
@@ -227,8 +232,12 @@
                                 ;
                                     { Error = yes("Invalid argument to option `--suppress-trace'.") }
 				)
+                            ;
+                                { MaybeTraceLevel = no },
+                                { Error = yes("Specified trace level compatible with grade") }
+                            )
                             ;
-                                { Error = yes("Invalid argument to option `--trace'\n\t(must be `minimum', `shallow', `deep', or `default').") }
+                            { Error = yes("Invalid argument to option `--trace'\n\t(must be `minimum', `shallow', `deep', `decl', `rep' or `default').") }
                             )
                         ;
                             { Error = yes("Invalid argument to option `--termination-norm'\n\t(must be `simple', `total' or  `num-data-elems').") }
@@ -596,6 +605,10 @@
 		Error = no
 	},
 
+	% --decl-debug is an extension of --debug
+	option_implies(decl_debug, require_tracing, bool(yes)),
+	option_implies(decl_debug, stack_trace, bool(yes)),
+
 	% The `.debug' grade (i.e. --stack-trace plus --require-tracing)
 	% implies --use-trail, except with --use-minimal-model, which is
 	% not compatible with --use-trail.
@@ -1512,12 +1525,18 @@
 grade_component_table("picreg", pic, [pic_reg - bool(yes)]).
 
 	% Debugging/Tracing components
+grade_component_table("decldebug", trace,
+	[stack_trace - bool(yes), require_tracing - bool(yes),
+	decl_debug - bool(yes)]).
 grade_component_table("debug", trace,
-	[stack_trace - bool(yes), require_tracing - bool(yes)]).
+	[stack_trace - bool(yes), require_tracing - bool(yes),
+	decl_debug - bool(no)]).
 grade_component_table("trace", trace,
-	[stack_trace - bool(no), require_tracing - bool(yes)]).
+	[stack_trace - bool(no), require_tracing - bool(yes),
+	decl_debug - bool(no)]).
 grade_component_table("strce", trace,
-	[stack_trace - bool(yes), require_tracing - bool(no)]).
+	[stack_trace - bool(yes), require_tracing - bool(no),
+	decl_debug - bool(no)]).
 
 :- pred reset_grade_options(option_table, option_table).
 :- mode reset_grade_options(in, out) is det.
@@ -1550,6 +1569,7 @@
 grade_start_values(pic_reg - bool(no)).
 grade_start_values(stack_trace - bool(no)).
 grade_start_values(require_tracing - bool(no)).
+grade_start_values(decl_debug - bool(no)).
 
 :- pred split_grade_string(string, list(string)).
 :- mode split_grade_string(in, out) is semidet.
Index: compiler/options.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/options.m,v
retrieving revision 1.382
diff -u -b -r1.382 options.m
--- compiler/options.m	2002/08/08 06:25:45	1.382
+++ compiler/options.m	2002/08/19 10:52:13
@@ -175,6 +175,7 @@
 		;	debug
 		;	stack_trace
 		;	require_tracing
+		;	decl_debug
 
 		%   (b) Profiling
 		;	profiling		% profile_time + profile_calls
@@ -750,8 +751,9 @@
 		% Optional feature compilation model options:
 		% (a) Debuggging
 	debug			-	bool_special,
-	require_tracing		-	bool(no),
 	stack_trace		-	bool(no),
+	require_tracing		-	bool(no),
+	decl_debug		-	bool(no),
 		% (b) Profiling
 	profiling		-	bool_special,
 	time_profiling		-	special,
@@ -1319,6 +1321,7 @@
 % not very useful and would probably only confuse people.
 % long_option("stack-trace",           stack_trace).
 % long_option("require-tracing",       require_tracing).
+long_option("decl-debug",       	decl_debug).
 	% (b) profiling
 long_option("profiling",		profiling).
 long_option("time-profiling",		time_profiling).
@@ -2651,6 +2654,12 @@
 	write_tabbed_lines([
 		"--debug\t\t\t\t(grade modifier: `.debug')",
 		"\tEnable Mercury-level debugging.",
+		"\tSee the Debugging chapter of the Mercury User's Guide",
+		"\tfor details.",
+		"\tThis option is not yet supported for the `--high-level-code'",
+		"\tback-ends.",
+		"--decl-debug\t\t\t\t(grade modifier: `.decldebug')",
+		"\tEnable declarative debugging.",
 		"\tSee the Debugging chapter of the Mercury User's Guide",
 		"\tfor details.",
 		"\tThis option is not yet supported for the `--high-level-code'",
Index: compiler/trace_params.m
===================================================================
RCS file: /home/mercury1/repository/mercury/compiler/trace_params.m,v
retrieving revision 1.10
diff -u -b -r1.10 trace_params.m
--- compiler/trace_params.m	2002/07/30 08:25:12	1.10
+++ compiler/trace_params.m	2002/08/19 11:12:15
@@ -37,13 +37,24 @@
 
 :- import_module hlds__hlds_pred.
 :- import_module ll_backend__llds. % XXX for trace_port
-:- import_module bool.
+:- import_module bool, std_util.
 
 :- type trace_level.
 :- type trace_suppress_items.
 
-	% The bool should be the setting of the `require_tracing' option.
-:- pred convert_trace_level(string::in, bool::in, trace_level::out) is semidet.
+	% The string should be the value of the --trace-level option;
+	% two bools should be the values of the `--require-tracing' and
+	% `--decl-debug' grade options.
+	%
+	% If the string is an acceptable trace level in the specified kinds of
+	% grades, return yes wrapper around the trace level.
+	%
+	% If the string is an known trace level that happens not to be
+	% acceptable in the specified kinds of grades, return no.
+	%
+	% If the string is not known trace level, fail.
+:- pred convert_trace_level(string::in, bool::in, bool::in,
+	maybe(trace_level)::out) is semidet.
 
 :- pred convert_trace_suppress(string::in, trace_suppress_items::out)
 	is semidet.
@@ -102,14 +113,18 @@
 
 trace_level_none = none.
 
-convert_trace_level("minimum", no, none).
-convert_trace_level("minimum", yes, shallow).
-convert_trace_level("shallow", _, shallow).
-convert_trace_level("deep", _, deep).
-convert_trace_level("decl", _, decl).
-convert_trace_level("rep", _, decl_rep).
-convert_trace_level("default", no, none).
-convert_trace_level("default", yes, deep).
+convert_trace_level("minimum", no,  no,  yes(none)).
+convert_trace_level("minimum", yes, no,  yes(shallow)).
+convert_trace_level("minimum", _,   yes, yes(decl)).
+convert_trace_level("shallow", _,   no,  yes(shallow)).
+convert_trace_level("shallow", _,   yes, no).
+convert_trace_level("deep",    _,   no,  yes(deep)).
+convert_trace_level("deep",    _,   yes, no).
+convert_trace_level("decl",    _,   _,   yes(decl)).
+convert_trace_level("rep",     _,   _,   yes(decl_rep)).
+convert_trace_level("default", no,  no,  yes(none)).
+convert_trace_level("default", yes, no,  yes(deep)).
+convert_trace_level("default", _,   yes, yes(decl)).
 
 eff_trace_level(PredInfo, ProcInfo, TraceLevel) = EffTraceLevel :-
 	(
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
Index: runtime/mercury_conf_param.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_conf_param.h,v
retrieving revision 1.63
diff -u -b -r1.63 mercury_conf_param.h
--- runtime/mercury_conf_param.h	2002/08/16 07:45:29	1.63
+++ runtime/mercury_conf_param.h	2002/08/19 10:45:15
@@ -147,6 +147,15 @@
 **	Note that MR_REQUIRE_TRACING is talking about execution tracing,
 **	not stack tracing; these are two independently configurable features.
 **
+** MR_DECL_DEBUG
+**	Require that all Mercury procedures linked in should be compiled
+**	with a trace level that supports declarative debugging. This effect
+**	is achieved by including MR_DECL_DEBUG in the mangled grade
+**	(see mercury_grade.h).
+**
+**	Setting MR_DECL_DEBUG requires MR_REQUIRE_TRACING and MR_STACK_TRACE
+**	to be set also.
+**
 ** MR_LOWLEVEL_DEBUG
 **	Enables various low-level debugging stuff,
 **	that was in the distant past used to debug
Index: runtime/mercury_grade.h
===================================================================
RCS file: /home/mercury1/repository/mercury/runtime/mercury_grade.h,v
retrieving revision 1.38
diff -u -b -r1.38 mercury_grade.h
--- runtime/mercury_grade.h	2002/08/16 07:45:05	1.38
+++ runtime/mercury_grade.h	2002/08/20 04:08:55
@@ -254,18 +254,28 @@
 ** Hence we consider it effectively binary incompatible.
 ** Similar considerations apply to procedure call tracing.
 */
-#if defined(MR_STACK_TRACE)
+#if defined(MR_DECL_DEBUG)
+  #define MR_GRADE_PART_12	MR_PASTE2(MR_GRADE_PART_11, _decldebug)
+  #if ! defined(MR_STACK_TRACE)
+    #error "declarative debugging require stack traces"
+  #endif
+  #if ! defined(MR_REQUIRE_TRACING)
+    #error "declarative debugging require execution tracing"
+  #endif
+#else
+  #if defined(MR_STACK_TRACE)
   #if defined(MR_REQUIRE_TRACING)
     #define MR_GRADE_PART_12	MR_PASTE2(MR_GRADE_PART_11, _debug)
   #else
     #define MR_GRADE_PART_12	MR_PASTE2(MR_GRADE_PART_11, _strce)
   #endif
-#else
+  #else
   #if defined(MR_REQUIRE_TRACING)
     #define MR_GRADE_PART_12	MR_PASTE2(MR_GRADE_PART_11, _trace)
   #else
     #define MR_GRADE_PART_12	MR_GRADE_PART_11
   #endif
+  #endif
 #endif
 
 #define MR_GRADE		MR_GRADE_PART_12
@@ -415,17 +425,21 @@
 ** Hence we consider it effectively binary incompatible.
 ** Similar considerations apply to procedure call tracing.
 */
-#if defined(MR_STACK_TRACE)
+#if defined(MR_DECL_DEBUG)
+  #define MR_GRADE_OPT_PART_12		MR_GRADE_OPT_PART_11 ".decldebug"
+#else
+  #if defined(MR_STACK_TRACE)
   #if defined(MR_REQUIRE_TRACING)
     #define MR_GRADE_OPT_PART_12	MR_GRADE_OPT_PART_11 ".debug"
   #else
     #define MR_GRADE_OPT_PART_12	MR_GRADE_OPT_PART_11 ".strce"
   #endif
-#else
+  #else
   #if defined(MR_REQUIRE_TRACING)
     #define MR_GRADE_OPT_PART_12	MR_GRADE_OPT_PART_11 ".trace"
   #else
     #define MR_GRADE_OPT_PART_12	MR_GRADE_OPT_PART_11
+    #endif
   #endif
 #endif
 
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
Index: scripts/canonical_grade.sh-subr
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/canonical_grade.sh-subr,v
retrieving revision 1.4
diff -u -b -r1.4 canonical_grade.sh-subr
--- scripts/canonical_grade.sh-subr	2001/12/18 05:44:17	1.4
+++ scripts/canonical_grade.sh-subr	2002/08/19 10:36:56
@@ -106,9 +106,13 @@
 # 	false)	;;
 # esac
 
-case $stack_trace,$require_tracing in
-	true,true)	GRADE="$GRADE.debug" ;;
-	false,true)	GRADE="$GRADE.trace" ;;
-	true,false)	GRADE="$GRADE.strce" ;;
-	false,false)	;;
+case $stack_trace,$require_tracing,$decl_debug in
+	true,true,true)		GRADE="$GRADE.decldebug" ;;
+	true,true,false)	GRADE="$GRADE.debug" ;;
+	false,true,false)	GRADE="$GRADE.trace" ;;
+	true,false,false)	GRADE="$GRADE.strce" ;;
+	false,false,false)	;;
+	*)			echo "$progname: error: invalid combination of debugging options." 1>&2
+				exit 1
+				;;
 esac
Index: scripts/final_grade_options.sh-subr
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/final_grade_options.sh-subr,v
retrieving revision 1.7
diff -u -b -r1.7 final_grade_options.sh-subr
--- scripts/final_grade_options.sh-subr	2001/01/29 01:55:08	1.7
+++ scripts/final_grade_options.sh-subr	2002/08/19 10:37:19
@@ -39,6 +39,15 @@
 esac
 
 #
+# --decl-debug implies --debug
+#
+case $decl_debug in true)
+	require_tracing=true
+	stack_trace=true
+	;;
+esac
+
+#
 # --target asm, IL or Java implies --high-level-code
 #
 case $target in asm|il|java)
Index: scripts/init_grade_options.sh-subr
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/init_grade_options.sh-subr,v
retrieving revision 1.18
diff -u -b -r1.18 init_grade_options.sh-subr
--- scripts/init_grade_options.sh-subr	2001/05/31 06:00:20	1.18
+++ scripts/init_grade_options.sh-subr	2002/08/19 10:37:34
@@ -42,6 +42,7 @@
 	--pic-reg
 	--no-stack-trace
 	--debug
+	--decl-debug
 		See the documentation in the \"Invocation\" section
 		of the Mercury User's Guide."
 
@@ -69,6 +70,7 @@
 pic_reg=false
 stack_trace=false
 require_tracing=false
+decl_debug=false
 
 case $# in
 	0) set - --grade "$DEFAULT_GRADE" ;;
Index: scripts/mgnuc.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/mgnuc.in,v
retrieving revision 1.87
diff -u -b -r1.87 mgnuc.in
--- scripts/mgnuc.in	2002/05/30 12:55:23	1.87
+++ scripts/mgnuc.in	2002/08/19 10:48:04
@@ -376,6 +376,11 @@
 	false)		TRACE_OPTS="" ;;
 esac
 
+case $decl_debug in
+	true)		DECL_DEBUG_OPTS="-DMR_DECL_DEBUG" ;;
+	false)		DECL_DEBUG_OPTS="" ;;
+esac
+
 GCC_OPTS="$NEST_OPTS $ASM_OPTS $GOTO_OPTS $REG_OPTS"
 
 # check that special grades are only used with gcc
@@ -529,7 +534,8 @@
 
 ALL_CC_OPTS="$MERC_ALL_C_INCL_DIRS $ANSI_OPTS $CHECK_OPTS $OPT_OPTS \
 		$HLC_OPTS $HLD_OPTS $GCC_OPTS $GC_OPTS $DEFINE_OPTS \
-		$TRACE_OPTS $STACK_TRACE_OPTS $LLDEBUG_OPTS $C_DEBUG_OPTS \
+		$STACK_TRACE_OPTS $TRACE_OPTS $DECL_DEBUG_OPTS \
+		$LLDEBUG_OPTS $C_DEBUG_OPTS \
 		$PROF_TIME_OPTS $PROF_CALLS_OPTS $PROF_MEMORY_OPTS \
 		$PROF_DEEP_OPTS $INLINE_ALLOC_OPTS $TRAIL_OPTS \
 		$RESERVE_TAG_OPTS $MINIMAL_MODEL_OPTS \
Index: scripts/ml.in
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/ml.in,v
retrieving revision 1.96
diff -u -b -r1.96 ml.in
--- scripts/ml.in	2002/04/29 08:22:05	1.96
+++ scripts/ml.in	2002/08/19 10:49:36
@@ -90,7 +90,8 @@
 
 MAYBE_STATIC_OPT=""
 
-# --require-tracing (which is implied by --debug) implies --trace
+# --require-tracing (which is implied by --debug and by --decl-debug)
+# implies --trace
 case $require_tracing in
 	true)	trace=true ;;
 	false)	;;
Index: scripts/parse_grade_options.sh-subr
===================================================================
RCS file: /home/mercury1/repository/mercury/scripts/parse_grade_options.sh-subr,v
retrieving revision 1.23
diff -u -b -r1.23 parse_grade_options.sh-subr
--- scripts/parse_grade_options.sh-subr	2001/05/31 06:00:20	1.23
+++ scripts/parse_grade_options.sh-subr	2002/08/19 10:58:32
@@ -164,6 +164,11 @@
 		stack_trace=false
 		require_tracing=false ;;
 
+	--decl-debug)
+		decl_debug=true ;;
+	--no-decl-debug)
+		decl_debug=false ;;
+
 	-s|--grade)
 		shift
 		grade="$1";
@@ -193,6 +198,7 @@
 		pic_reg=false
 		stack_trace=false
 		require_tracing=false
+		decl_debug=false
 
 		grade_pieces=`echo $grade | tr '.' ' '`
 		for grade_piece in $grade_pieces
@@ -393,6 +399,12 @@
 					stack_trace=true
 					require_tracing=true
 					;;
+				decldebug)
+					stack_trace=true
+					require_tracing=true
+					decl_debug=true
+					;;
+
 				*)
 					echo "$0: unknown grade component" \
 						"\`$grade_piece'" 1>&2
cvs diff: Diffing tests
cvs diff: Diffing tests/benchmarks
cvs diff: Diffing tests/debugger
cvs diff: Diffing tests/debugger/declarative
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