fix meta-call on system predicates bug
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1181 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
9dfcbc1de9
commit
fda0b76f18
4
C/exec.c
4
C/exec.c
@ -77,7 +77,11 @@ inline static Int
|
|||||||
CallMetaCall(Term mod) {
|
CallMetaCall(Term mod) {
|
||||||
ARG2 = cp_as_integer(B); /* p_save_cp */
|
ARG2 = cp_as_integer(B); /* p_save_cp */
|
||||||
ARG3 = ARG1;
|
ARG3 = ARG1;
|
||||||
|
if (mod) {
|
||||||
ARG4 = mod;
|
ARG4 = mod;
|
||||||
|
} else {
|
||||||
|
ARG4 = TermProlog;
|
||||||
|
}
|
||||||
return (CallPredicate(PredMetaCall, B, PredMetaCall->CodeOfPred));
|
return (CallPredicate(PredMetaCall, B, PredMetaCall->CodeOfPred));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -675,10 +675,10 @@ incore(G) :- '$execute'(G).
|
|||||||
;
|
;
|
||||||
'$call'(B,CP,G0,M)
|
'$call'(B,CP,G0,M)
|
||||||
).
|
).
|
||||||
'$call'(\+ X, _, _,_) :- !,
|
'$call'(\+ X, CP, G0, M) :- !,
|
||||||
\+ '$execute'(X).
|
\+ '$call'(X, CP, G0, M).
|
||||||
'$call'(not(X), _, _,_) :- !,
|
'$call'(not(X), CP, G0, M) :- !,
|
||||||
\+ '$execute'(X).
|
\+ '$call'(X, CP, G0, M).
|
||||||
'$call'(!, CP, _,_) :- !,
|
'$call'(!, CP, _,_) :- !,
|
||||||
'$$cut_by'(CP).
|
'$$cut_by'(CP).
|
||||||
'$call'([A|B], _, _, M) :- !,
|
'$call'([A|B], _, _, M) :- !,
|
||||||
|
12
pl/init.yap
12
pl/init.yap
@ -27,12 +27,12 @@ false :- fail.
|
|||||||
(:- G) :- '$execute'(G), !.
|
(:- G) :- '$execute'(G), !.
|
||||||
'$$!'(CP) :- '$cut_by'(CP).
|
'$$!'(CP) :- '$cut_by'(CP).
|
||||||
[] :- true.
|
[] :- true.
|
||||||
','(A,B) :- '$current_module'(Module), '$meta_call'((A,B),Module).
|
','(A,B) :- '$execute'(A), '$execute'(B).
|
||||||
';'(A,B) :- '$current_module'(Module), '$meta_call'((A;B),Module).
|
';'(A,B) :- ('$execute'(A) ; '$execute'(B)).
|
||||||
'|'(A,B) :- '$current_module'(Module), '$meta_call'((A;B),Module).
|
'|'(A,B) :- ('$execute'(A) ; '$execute'(B)).
|
||||||
'->'(A,B) :- '$current_module'(Module), '$meta_call'((A->B),Module).
|
'->'(A,B) :- ('$execute'(A) -> '$execute'(B)).
|
||||||
\+(G) :- '$current_module'(Module), '$meta_call'(\+(G),Module).
|
\+(G) :- \+ '$execute'(G).
|
||||||
not(G) :- '$current_module'(Module), '$meta_call'(not(G),Module).
|
not(G) :- \+ '$execute'(G).
|
||||||
|
|
||||||
|
|
||||||
:- set_value('$doindex',true).
|
:- set_value('$doindex',true).
|
||||||
|
Reference in New Issue
Block a user