fix recent regressions on :- if, etc.

This commit is contained in:
Vítor Santos Costa 2012-03-04 10:22:40 +00:00
parent 0f10f4332e
commit 5a472616e7
2 changed files with 16 additions and 11 deletions

View File

@ -293,11 +293,16 @@ use_module(M,F,Is) :-
!. !.
'$reset_if'(OldIfLevel) :- '$reset_if'(OldIfLevel) :-
catch(nb_getval('$if_level',OldIncludeLevel),_,fail), !, catch(nb_getval('$if_level',OldIfLevel),_,fail), !,
nb_setval('$if_level',0). nb_setval('$if_level',0).
'$reset_if'(0) :- '$reset_if'(0) :-
nb_setval('$if_level',0). nb_setval('$if_level',0).
'$get_if'(Level0) :-
catch(nb_getval('$if_level',Level),_,fail), !,
Level0 = Level.
'$get_if'(0).
'$bind_module'(_, load_files). '$bind_module'(_, load_files).
'$bind_module'(Mod, use_module(Mod)). '$bind_module'(Mod, use_module(Mod)).
@ -894,7 +899,7 @@ absolute_file_name(File,Opts,TrueFileName) :-
% %
'$if'(_,top) :- !, fail. '$if'(_,top) :- !, fail.
'$if'(Goal,_) :- '$if'(Goal,_) :-
nb_getval('$if_level',Level0), '$get_if'(Level0),
Level is Level0 + 1, Level is Level0 + 1,
nb_setval('$if_level',Level), nb_setval('$if_level',Level),
nb_getval('$endif',OldEndif), nb_getval('$endif',OldEndif),
@ -919,7 +924,7 @@ absolute_file_name(File,Opts,TrueFileName) :-
'$else'(top) :- !, fail. '$else'(top) :- !, fail.
'$else'(_) :- '$else'(_) :-
nb_getval('$if_level',0), !, '$get_if'(0), !,
'$do_error'(context_error(no_if),(:- else)). '$do_error'(context_error(no_if),(:- else)).
% we have done an if, so just skip % we have done an if, so just skip
'$else'(_) :- '$else'(_) :-
@ -927,14 +932,14 @@ absolute_file_name(File,Opts,TrueFileName) :-
nb_setval('$if_skip_mode',skip). nb_setval('$if_skip_mode',skip).
% we can try the elif % we can try the elif
'$else'(_) :- '$else'(_) :-
nb_getval('$if_level',Level), '$get_if'(Level),
nb_getval('$endif',elif(Level,OldEndif,Mode)), nb_getval('$endif',elif(Level,OldEndif,Mode)),
nb_setval('$endif',endif(Level,OldEndif,Mode)), nb_setval('$endif',endif(Level,OldEndif,Mode)),
nb_setval('$if_skip_mode',run). nb_setval('$if_skip_mode',run).
'$elif'(_,top) :- !, fail. '$elif'(_,top) :- !, fail.
'$elif'(Goal,_) :- '$elif'(Goal,_) :-
nb_getval('$if_level',0), '$get_if'(0),
'$do_error'(context_error(no_if),(:- elif(Goal))). '$do_error'(context_error(no_if),(:- elif(Goal))).
% we have done an if, so just skip % we have done an if, so just skip
'$elif'(_,_) :- '$elif'(_,_) :-
@ -942,7 +947,7 @@ absolute_file_name(File,Opts,TrueFileName) :-
nb_setval('$if_skip_mode',skip). nb_setval('$if_skip_mode',skip).
% we can try the elif % we can try the elif
'$elif'(Goal,_) :- '$elif'(Goal,_) :-
nb_getval('$if_level',Level), '$get_if'(Level),
nb_getval('$endif',elif(Level,OldEndif,Mode)), nb_getval('$endif',elif(Level,OldEndif,Mode)),
('$if_call'(Goal) ('$if_call'(Goal)
-> ->
@ -958,11 +963,11 @@ absolute_file_name(File,Opts,TrueFileName) :-
'$endif'(top) :- !, fail. '$endif'(top) :- !, fail.
'$endif'(_) :- '$endif'(_) :-
% unmmatched endif. % unmmatched endif.
nb_getval('$if_level',0), '$get_if'(0),
'$do_error'(context_error(no_if),(:- endif)). '$do_error'(context_error(no_if),(:- endif)).
'$endif'(_) :- '$endif'(_) :-
% back to where you belong. % back to where you belong.
nb_getval('$if_level',Level), '$get_if'(Level),
nb_getval('$endif',Endif), nb_getval('$endif',Endif),
Level0 is Level-1, Level0 is Level-1,
nb_setval('$if_level',Level0), nb_setval('$if_level',Level0),

View File

@ -743,19 +743,19 @@ yap_flag(user_input,OUT) :-
var(OUT), !, var(OUT), !,
stream_property(OUT,alias(user_input)). stream_property(OUT,alias(user_input)).
yap_flag(user_input,Stream) :- yap_flag(user_input,Stream) :-
set_stream(Stream, alias(user_input). set_stream(Stream, alias(user_input)).
yap_flag(user_output,OUT) :- yap_flag(user_output,OUT) :-
var(OUT), !, var(OUT), !,
stream_property(OUT,alias(user_output)). stream_property(OUT,alias(user_output)).
yap_flag(user_output,Stream) :- yap_flag(user_output,Stream) :-
set_stream(Stream, alias(user_output). set_stream(Stream, alias(user_output)).
yap_flag(user_error,OUT) :- yap_flag(user_error,OUT) :-
var(OUT), !, var(OUT), !,
stream_property(OUT,alias(user_error)). stream_property(OUT,alias(user_error)).
yap_flag(user_error,Stream) :- yap_flag(user_error,Stream) :-
set_stream(Stream, alias(user_error). set_stream(Stream, alias(user_error)).
yap_flag(debugger_print_options,OUT) :- yap_flag(debugger_print_options,OUT) :-
var(OUT), var(OUT),