follow import recursively so that we don't lose properties like being a
meta predicate.
This commit is contained in:
parent
742979eb9c
commit
bc4b718afb
@ -904,19 +904,13 @@ not(G) :- \+ '$execute'(G).
|
||||
'$undefp'([M|G]) :-
|
||||
% make sure we do not loop on undefined predicates
|
||||
% for undefined_predicates.
|
||||
(
|
||||
recorded('$import','$import'(NM,M,Goal,G,_,_),_)
|
||||
->
|
||||
true
|
||||
;
|
||||
'$enter_undefp',
|
||||
(
|
||||
swi:swi_predicate_table(M,G,NM,Goal)
|
||||
'$imported_predicate'(NM,M,Goal,G)
|
||||
->
|
||||
'$exit_undefp'
|
||||
;
|
||||
once('$find_undefp_handler'(G,M,Goal,NM))
|
||||
)
|
||||
),
|
||||
!,
|
||||
Goal \= fail,
|
||||
|
@ -368,6 +368,22 @@ module(N) :-
|
||||
'$exit_undefp',
|
||||
fail.
|
||||
|
||||
%
|
||||
% get all imported predicates
|
||||
%
|
||||
'$imported_predicate'(FM,Mod,FPred,Pred) :-
|
||||
recorded('$import','$import'(IM,Mod,IPred,Pred,_,_),_),
|
||||
'$continue_imported'(FM, IM, FPred, IPred).
|
||||
'$imported_predicate'(FM,Mod,FPred,Pred) :-
|
||||
swi:swi_predicate_table(Mod,Pred,IM,IPred),
|
||||
'$continue_imported'(FM, IM, FPred, IPred).
|
||||
|
||||
'$continue_imported'(FM,Mod,FPred,Pred) :-
|
||||
recorded('$import','$import'(IM,Mod,IPred,Pred,_,_),_), !,
|
||||
'$continue_imported'(FM, IM, FPred, IPred).
|
||||
'$continue_imported'(Mod,Mod,Pred,Pred).
|
||||
|
||||
|
||||
% module_transparent declaration
|
||||
%
|
||||
|
||||
|
@ -798,7 +798,7 @@ predicate_property(Pred,Prop) :-
|
||||
'$pred_exists'(Pred,Mod), !,
|
||||
'$predicate_property'(Pred,Mod,Mod,Prop).
|
||||
'$predicate_property2'(Pred,Prop,Mod) :-
|
||||
recorded('$import','$import'(M,Mod,NPred,Pred,_,_),_),
|
||||
'$imported_predicate'(M,Mod,NPred,Pred),
|
||||
(
|
||||
Prop = imported_from(M)
|
||||
;
|
||||
|
Reference in New Issue
Block a user