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
This commit is contained in:
vsc 2005-04-20 20:06:26 +00:00
parent 3ecff9c37a
commit 668a3dce2b
4 changed files with 48 additions and 21 deletions

View File

@ -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

View File

@ -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)).

View File

@ -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'(_,_,_,_).

View File

@ -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', []),