From: Terrance S. <ts...@us...> - 2003-11-29 03:10:44
|
Update of /cvsroot/xsb/XSB/syslib In directory sc8-pr-cvs1:/tmp/cvs-serv23109/syslib Modified Files: consult.H consult.P consult.xwam error_handler.H error_handler.P error_handler.xwam standard.P standard.xwam Log Message: Changes in consult to perform type test in load_dyn (or rather to change this to be more consistent with ISO open ... I was in there anyway. New error types in error_handler. Also fixed bug in read_term. Index: consult.H =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.H,v retrieving revision 1.25 retrieving revision 1.26 diff -u -r1.25 -r1.26 --- consult.H 22 Jul 2003 17:22:07 -0000 1.25 +++ consult.H 29 Nov 2003 03:10:32 -0000 1.26 @@ -23,7 +23,6 @@ ** */ - :- export consult/1, consult/2, '.'/2, reconsult/1, reconsult/2, compile/1, compile/2, search_module/6, load_dyn/1, load_dyn/2, @@ -36,39 +35,39 @@ :- local load_dyn_retracted/5, load_dyn_trie_retracted/1, load_dyn_file_loaded/2, load_dyn_pred_loaded/4, load_dyn_file/1. -:- import libpath/1 from loader. +:- import asserta/1, (dynamic)/1, retractall/1, assert/1, retract/1, t_assert/2 + from assert. +:- import warning/1, time_message/2 from auxlry. +:- import banner_control/1 from banner. +:- import append/3, memberchk/2 from basics. :- import compile/4 from compile. -:- import compile_cH/5 from foreign. -:- import str_cat/3, str_sub/2 from string. -:- import default_assert_size/1 from config. :- import predicate_property/2, current_input_port/1 from curr_sym. -:- import file_write0/2, file_nl/1 from xsb_writ. -:- import rm/1, sys_link/3, process_control/2 from shell. -:- import abort/1, call/1, file_exists/1, atom/1, repeat/0, - seeing/1, see/1, seen/0, call/1, goal_cut_trans/3, - expand_term/2, read/1, op/3, (table)/1, (index)/3, (index)/2, - (=..)/2, writeln/1, write_canonical/1, tell/1, - told/0, telling/1, functor/3, cputime/1 - from standard. +:- import default_assert_size/1 from config. +:- import check_atom/3 from error_handler. +:- import file_time/2, file_close/1 from file_io. +:- import '_$index'/3, '_$trie_asserted'/1 from file_op. +:- import compile_cH/5 from foreign. +:- import conset/2, conget/2, gensym/2 from gensym. +:- import add_hilog_symbol/1 from hilogsym. +:- import libpath/1 from loader. :- import code_load/3, code_call/3, file_read_canonical/3, expand_filename/2, unload_seg/1, buff_word/3, assert_code_to_buff/1, assert_buff_to_clref/6, conpsc/2, psc_ep/2, psc_tabled/2, psc_type/2, psc_name/2, psc_arity/2, existing_file_extension/2, almost_search_module/5 from machine. -:- import file_time/2, file_close/1 from file_io. -:- import asserta/1, (dynamic)/1, retractall/1, assert/1, retract/1, t_assert/2 - from assert. -:- import warning/1, time_message/2 from auxlry. -:- import append/3, memberchk/2 from basics. -:- import '_$index'/3, '_$trie_asserted'/1 from file_op. -:- import add_hilog_symbol/1 from hilogsym. :- import get_p_mod/3, change_multifile_directive/3, open_or_xpp_file/2, '_$multifile'/1, '_$multifile1'/1, '_$multifile2'/3, '_$apply_arity'/1 from parse. -:- import conset/2, conget/2, gensym/2 from gensym. -:- import xsb_configuration/2 from xsb_configuration. - -:- import banner_control/1 from banner. +:- import rm/1, sys_link/3, process_control/2 from shell. :- import (multifile)/1 from standard. +:- import abort/1, call/1, file_exists/1, atom/1, repeat/0, + seeing/1, see/1, seen/0, call/1, goal_cut_trans/3, + expand_term/2, read/1, op/3, (table)/1, (index)/3, (index)/2, + (=..)/2, writeln/1, write_canonical/1, tell/1, + told/0, telling/1, functor/3, cputime/1 + from standard. +:- import str_cat/3, str_sub/2 from string. +:- import xsb_configuration/2 from xsb_configuration. +:- import file_write0/2, file_nl/1 from xsb_writ. Index: consult.P =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.P,v retrieving revision 1.39 retrieving revision 1.40 diff -u -r1.39 -r1.40 --- consult.P 22 Jul 2003 17:22:07 -0000 1.39 +++ consult.P 29 Nov 2003 03:10:32 -0000 1.40 @@ -261,15 +261,13 @@ ), write_canonical(Term),writeln('.'). - load_dyn(File) :- load_dyn(File,1). + +%% TLS: changed behavior to throw error rather than fail to make +%% compatable with other ISO type errors, e.g. open/[3,4]. load_dyn(File,Dir) :- - (atom(File) - -> true - ; file_write0(STDERR, 'Wrong type in argument 1 of load_dyn/1'), - fail - ), + check_atom(File,'load_dyn/1',1), get_fname(File,SExt,Base,Mod), load_dyn0(SExt,Base,Mod,Dir). Index: consult.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/consult.xwam,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 Binary files /tmp/cvsuPbeka and /tmp/cvsqu1oma differ Index: error_handler.H =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/error_handler.H,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- error_handler.H 14 Nov 2003 19:34:12 -0000 1.5 +++ error_handler.H 29 Nov 2003 03:10:32 -0000 1.6 @@ -23,8 +23,11 @@ ** */ -:- export domain_error/4, type_error/4, instantiation_error/2, - check_stream/3, check_nonvar_list/3, check_nonvar/3, +:- export domain_error/4, permission_error/4, + instantiation_error/2, type_error/4, + check_atom/3, + check_nonvar_list/3, check_nonvar/3, + check_stream/3, default_error_handler/1. :- import (dynamic)/1 from assert. Index: error_handler.P =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/error_handler.P,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- error_handler.P 14 Nov 2003 19:34:12 -0000 1.5 +++ error_handler.P 29 Nov 2003 03:10:32 -0000 1.6 @@ -62,11 +62,12 @@ Culprit,' in place of ',Valid_type,')] ', Msg), STDERR). default_sys_error_handler(error(existence_error(_Object_type,_Culprit),Msg)) :- messageln(('++Error[XSB/Runtime/P]: ', Msg), STDERR). -default_sys_error_handler(error(undefined_predicate(_Name,_Arity,_Module),Msg)) :- +default_sys_error_handler(error( + undefined_predicate(_Name,_Arity,_Module),Msg)) :- messageln(('++Error[XSB/Runtime/P]: ', Msg), STDERR). default_sys_error_handler(error(permission_error(Op,Obj_type,Culprit),Msg)) :- - messageln(('++Error[XSB/Runtime/P]: [Permission (Operation',Culprit, - ' of type ',Op,' on ',Obj_type,')] ', Msg), STDERR). + messageln(('++Error[XSB/Runtime/P]: [Permission (Operation) ', + Op,' on ',Obj_type,': ',Culprit,'] ',Msg), STDERR). default_sys_error_handler(error(representation_error(Flag),Msg)) :- messageln(('++Error[XSB/Runtime/P]: [Representation (',Flag, ')] ', Msg), STDERR). @@ -81,29 +82,32 @@ % ISO-compatable convenience predicates + +domain_error(Valid_type,Culprit,Predicate,Arg):- + throw(error(domain_error(Valid_type,Culprit), + (' in arg ',Arg,' of predicate ',Predicate))). + instantiation_error(Predicate,Arg):- throw(error(instantiation_error, (' in arg ',Arg,' of predicate ',Predicate))). +permission_error(Op,Obj_type,Culprit,Predicate):- + throw(error(permission_error(Op,Obj_type,Culprit),(' in ',Predicate))). + type_error(Valid_type,Culprit,Predicate,Arg):- throw(error(type_error(Valid_type,Culprit), (' in arg ',Arg,' of predicate ',Predicate))). -domain_error(Valid_type,Culprit,Predicate,Arg):- - throw(error(domain_error(Valid_type,Culprit), - (' in arg ',Arg,' of predicate ',Predicate))). %-------------------------------- % These checks can be reused for various types of ISO compatability. -% Checks that a given Term is a "stream. -% Should make stream a term for better checking. -check_stream(Stream,Predicate,Arg) :- - check_nonvar(Stream,Predicate,Arg), - (atom(Stream) -> +%------------- +% Checks that a term is not a variable +check_atom(Term,Predicate,Arg) :- + (atom(Term) -> true - ; - instantiation_error(Predicate,Arg)). + ; type_error(atom,Term,Predicate,Arg) ). %------------- % Checks that a term is not a variable @@ -126,5 +130,16 @@ (nonvar(H) -> check_nonvar_list1(T,Predicate,Arg) ; + instantiation_error(Predicate,Arg)). + +%------------- + +% Checks that a given Term is a "stream. +% Should make stream a term for better checking. +check_stream(Stream,Predicate,Arg) :- + check_nonvar(Stream,Predicate,Arg), + (atom(Stream) -> + true + ; instantiation_error(Predicate,Arg)). Index: error_handler.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/error_handler.xwam,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 Binary files /tmp/cvs36STBf and /tmp/cvseH730k differ Index: standard.P =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/standard.P,v retrieving revision 1.74 retrieving revision 1.75 diff -u -r1.74 -r1.75 --- standard.P 14 Nov 2003 19:34:12 -0000 1.74 +++ standard.P 29 Nov 2003 03:10:32 -0000 1.75 @@ -318,14 +318,14 @@ read_term_check(stream,List,read_term/3), stat_flag(CURRENT_INPUT, File), file_read(File, T,Vlist), - process_variable_list(List,T,Vlist). + process_variable_list(List,T,Vlist),!. read_term(Istr,T,List):- read_term_check(Istr,List,read_term/3), seeing(Oldstr),see(Istr),stat_flag(CURRENT_INPUT, File), file_read(File, T,Vlist), see(Oldstr), - process_variable_list(List,T,Vlist). + process_variable_list(List,T,Vlist),!. read_term_check(Istr,List,Predvers):- check_stream(Istr,Predvers,1), Index: standard.xwam =================================================================== RCS file: /cvsroot/xsb/XSB/syslib/standard.xwam,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 Binary files /tmp/cvsRHsNeh and /tmp/cvseVv9wq differ |