From 668a3dce2bf95f27e53f277b038da3835b5b6805 Mon Sep 17 00:00:00 2001 From: vsc Date: Wed, 20 Apr 2005 20:06:26 +0000 Subject: [PATCH] try to improve error handling and warnings from within consults. git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1280 b08c6af1-5177-4d33-ba66-4b1c6b8b522a --- C/errors.c | 2 +- pl/checker.yap | 12 +++++++----- pl/consult.yap | 7 +++++-- pl/errors.yap | 48 +++++++++++++++++++++++++++++++++++------------- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/C/errors.c b/C/errors.c index 23082969c..87d6cfa74 100644 --- a/C/errors.c +++ b/C/errors.c @@ -371,7 +371,7 @@ Yap_Error(yap_error_number type, Term where, char *format,...) char *tp = tmpbuf; int psize = YAP_BUF_SIZE; -#if DEBUG +#if DEBUG_STRICT if (Yap_heap_regs && !(Yap_PrologMode & BootMode)) fprintf(stderr,"***** Processing Error %d (%lx,%x) %s***\n", type, (unsigned long int)ActiveSignals,Yap_PrologMode,format); else diff --git a/pl/checker.yap b/pl/checker.yap index 0cd64e214..6daba9e1f 100644 --- a/pl/checker.yap +++ b/pl/checker.yap @@ -11,8 +11,11 @@ * File: checker.yap * * comments: style checker for Prolog * * * -* Last rev: $Date: 2005-04-20 04:08:20 $,$Author: vsc $ * +* Last rev: $Date: 2005-04-20 20:06:11 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.17 2005/04/20 04:08:20 vsc +* fix warnings +* * Revision 1.16 2005/01/13 05:47:27 vsc * lgamma broke arithmetic optimisation * integer_y has type y @@ -138,7 +141,7 @@ no_style_check([H|T]) :- no_style_check(H), no_style_check(T). '$number_of_clauses'(H,M,ClN0), ClN is ClN0+1 ), - print_message(warning,singletons(SVs,(M:Name/Arity),LN,ClN)). + print_message(warning,singletons(SVs,(M:Name/Arity),ClN)). '$xtract_head'(V,M,M,V,call,1) :- var(V), !. '$xtract_head'((H:-_),OM,M,NH,Name,Arity) :- !, @@ -158,8 +161,7 @@ no_style_check([H|T]) :- no_style_check(H), no_style_check(T). recorded('$discontiguous_defs','$df'(F,A,M),_), !. '$handle_discontiguous'(F,A,M) :- '$in_this_file_before'(F,A,M), - '$start_line'(LN), - print_message(warning,clauses_not_together((M:F/A),LN)). + print_message(warning,clauses_not_together((M:F/A))). '$handle_multiple'(F,A,M) :- \+ '$first_clause_in_file'(F,A,M), !. @@ -182,7 +184,7 @@ no_style_check([H|T]) :- no_style_check(H), no_style_check(T). '$test_if_well_reconsulting'(F,F,_) :- !. '$test_if_well_reconsulting'(_,Fil,P) :- '$start_line'(LN), - print_message(warning,defined_elsewhere(P,Fil,LN)). + print_message(warning,defined_elsewhere(P,Fil)). '$multifile'(V, _) :- var(V), !, '$do_error'(instantiation_error,multifile(V)). diff --git a/pl/consult.yap b/pl/consult.yap index e8b92b8c0..e0aa1ff90 100644 --- a/pl/consult.yap +++ b/pl/consult.yap @@ -287,12 +287,15 @@ remove_from_path(New) :- '$check_path'(New,Path), '$add_multifile'(File,Name,Arity,Module). '$add_multifile'(File,Name,Arity,Module) :- - recordzifnot('$multifile_defs','$defined'(File,Name,Arity,Module),_), !, + recorded('$multifile_defs','$defined'(File,Name,Arity,Module), _), !, + '$print_message'(warning,declaration((multifile Module:Name/Arity),ignored)). +'$add_multifile'(File,Name,Arity,Module) :- + recordz('$multifile_defs','$defined'(File,Name,Arity,Module),_), !, fail. '$add_multifile'(File,Name,Arity,Module) :- recorded('$mf','$mf_clause'(File,Name,Arity,Module,Ref),R), erase(R), - erase(Ref), + '$erase_clause'(Ref,Module), fail. '$add_multifile'(_,_,_,_). diff --git a/pl/errors.yap b/pl/errors.yap index 145faba83..4797a700a 100644 --- a/pl/errors.yap +++ b/pl/errors.yap @@ -11,8 +11,14 @@ * File: errors.yap * * comments: error messages for YAP * * * -* Last rev: $Date: 2005-04-07 17:55:05 $,$Author: ricroc $ * +* Last rev: $Date: 2005-04-20 20:06:26 $,$Author: vsc $ * * $Log: not supported by cvs2svn $ +* Revision 1.62 2005/04/07 17:55:05 ricroc +* Adding tabling support for mixed strategy evaluation (batched and local scheduling) +* UPDATE: compilation flags -DTABLING_BATCHED_SCHEDULING and -DTABLING_LOCAL_SCHEDULING removed. To support tabling use -DTABLING in the Makefile or --enable-tabling in configure. +* NEW: yap_flag(tabling_mode,MODE) changes the tabling execution mode of all tabled predicates to MODE (batched, local or default). +* NEW: tabling_mode(PRED,MODE) changes the default tabling execution mode of predicate PRED to MODE (batched or local). +* * Revision 1.61 2005/02/21 16:50:21 vsc * amd64 fixes * library fixes @@ -107,8 +113,10 @@ print_message(Level, Mss) :- ( var(Msg) ; var(Info) ), !, format(user_error,'% YAP: no handler for error ~w~n', [error(Msg,Info)]). '$print_message'(error,error(syntax_error(A,B,C,D,E,F),_)) :- !, + '$output_error_location', '$output_error_message'(syntax_error(A,B,C,D,E,F), 'SYNTAX ERROR'). '$print_message'(error,error(Msg,[Info|local_sp(Where,Envs,CPs)])) :- + '$output_error_location', '$prepare_loc'(Info,Where,Location), '$output_error_message'(Msg, Location), !, '$do_stack_dump'(Envs, CPs). @@ -123,6 +131,7 @@ print_message(Level, Mss) :- true ). '$print_message'(warning,M) :- + '$output_error_location', format(user_error, '% ', []), '$do_print_message'(M), format(user_error, '~n', []). @@ -130,6 +139,18 @@ print_message(Level, Mss) :- '$do_print_message'(M), format(user_error, '~n', []). +'$output_error_location' :- + get_value('$consulting_file',FileName), + FileName \= [], + '$start_line'(LN), + '$show_consult_level'(LC), + '$output_file_pos'(FileName,LN,LC), + format(user_error, '~*|', [LC]). + +'$output_file_pos'(user_input,LN,LC) :- !, + format(user_error,'~*|% In user_input near line ~d,~n',[LC,LN]). +'$output_file_pos'(FileName,LN,LC) :- + format(user_error,'~*|% In file ~a, near line ~d,~n',[LC,FileName,LN]). '$do_informational_message'(halt) :- !, format(user_error, '% YAP execution halted~n', []). @@ -173,15 +194,17 @@ print_message(Level, Mss) :- '$do_print_message'(breakpoints(L)) :- !, format(user_error,'Spy-points set on:', []), '$print_list_of_preds'(L). -'$do_print_message'(clauses_not_together(P,LN)) :- !, - format(user_error, 'Discontiguous definition of ~q, at line ~d.',[P,LN]). +'$do_print_message'(clauses_not_together(P)) :- !, + format(user_error, 'Discontiguous definition of ~q.',[P]). '$do_print_message'(debug(debug)) :- !, format(user_error,'Debug mode on.',[]). '$do_print_message'(debug(off)) :- !, format(user_error,'Debug mode off.',[]). '$do_print_message'(debug(trace)) :- !, format(user_error,'Trace mode on.',[]). -'$do_print_message'(defined_elsewhere(P,F,LN)) :- !, +'$do_print_message'(declaration(Args,Action)) :- !, + format(user_error,'declaration ~w ~w.', [Args,Action]). +'$do_print_message'(defined_elsewhere(P,F)) :- !, format(user_error, 'predicate ~q, at line ~d, previously defined in file ~a.',[P,LN,F]). '$do_print_message'(import(Pred,To,From,private)) :- !, format(user_error,'Importing private predicate ~w:~w to ~w.', @@ -200,10 +223,10 @@ print_message(Level, Mss) :- '$do_print_message'(leash([A|B])) :- !, format(user_error,'Leashing set to ~w.', [[A|B]]). -'$do_print_message'(singletons(SVs,P,LN,CLN)) :- !, +'$do_print_message'(singletons(SVs,P,CLN)) :- !, format(user_error, 'Singleton variable',[]), '$write_svs'(SVs), - format(user_error, ' in ~q at line ~d, clause ~d.',[P,LN,CLN]). + format(user_error, ' in ~q, clause ~d.',[P,CLN]). '$do_print_message'(trace_help) :- !, format(user_error,' Please enter a valid debugger command (h for help).', []). '$do_print_message'(version(Version)) :- !, @@ -633,12 +656,12 @@ print_message(Level, Mss) :- format(user_error,'% REPRESENTATION ERROR- ~w: number too big~n', [Where]). '$output_error_message'(syntax_error(G,0,Msg,[],0,0), Where) :- !, - format(user_error,'% SYNTAX ERROR in ~w: ~a~n',[G,Msg]). -'$output_error_message'(syntax_error(_,Position,_,Term,Pos,Start), Where) :- + format(user_error,'% SYNTAX ERROR: ~a',[G,Msg]). +'$output_error_message'(syntax_error(_,_,_,Term,Pos,Start), Where) :- format(user_error,'% ~w ',[Where]), - '$dump_syntax_error_line'(Start,Position), +% '$dump_syntax_error_line'(Start,Position), '$dump_syntax_error_term'(10,Pos, Term), - format(user_error,'.~n]~n',[]). + format(user_error,'.~n',[]). '$output_error_message'(system_error, Where) :- format(user_error,'% SYSTEM ERROR- ~w~n', [Where]). @@ -731,9 +754,8 @@ print_message(Level, Mss) :- [Where]). -'$dump_syntax_error_line'(Pos,_) :- - format(user_error,'at line ~d:~n', - [Pos]). +'$dump_syntax_error_line'(_,Position) :- + format(user_error,'% near line ~d,~n',[Position]). '$dump_syntax_error_term'(0,J,L) :- !, format(user_error,'~n', []),