fix module expansion inside arguments.

This commit is contained in:
Vítor Santos Costa 2014-06-13 10:16:18 +01:00
parent 8f5c9e1681
commit ed04954b3f
1 changed files with 15 additions and 15 deletions

View File

@ -332,16 +332,16 @@ module(N) :-
expand_goal(G, G) :-
var(G), !.
expand_goal(M:G, M:NG) :-
'$do_expand'(G, M, NG), !.
'$do_expand'(G, M, [], NG), !.
expand_goal(G, NG) :-
'$current_module'(Mod),
'$do_expand'(G, Mod, NG), !.
'$do_expand'(G, Mod, [], NG), !.
expand_goal(G, G).
'$do_expand'(G, _, G) :- var(G), !.
'$do_expand'(M:G, _CurMod, M:GI) :- !,
'$do_expand'(G, M, GI).
'$do_expand'(G, CurMod, GI) :-
'$do_expand'(G, _, _, G) :- var(G), !.
'$do_expand'(M:G, _CurMod, HVars, M:GI) :- !,
'$do_expand'(G, M, HVars, GI).
'$do_expand'(G, CurMod, _HVars, GI) :-
(
'$pred_exists'(goal_expansion(G,GI), CurMod),
call(CurMod:goal_expansion(G, GI))
@ -359,21 +359,21 @@ expand_goal(G, G).
;
user:goal_expansion(G, GI)
), !.
'$do_expand'(G, CurMod, NG) :-
'$do_expand'(G, CurMod, HVars, NG) :-
'$is_metapredicate'(G,CurMod), !,
functor(G, Name, Arity),
prolog:'$meta_predicate'(Name,CurMod,Arity,PredDef),
G =.. [Name|GArgs],
PredDef =.. [Name|GDefs],
'$expand_args'(GArgs, CurMod, GDefs, NGArgs),
'$expand_args'(GArgs, CurMod, GDefs, HVars, NGArgs),
NG =.. [Name|NGArgs].
'$expand_args'([], _, [], []).
'$expand_args'([A|GArgs], CurMod, [0|GDefs], [NA|NGArgs]) :-
'$do_expand'(A, CurMod, NA), !,
'$expand_args'(GArgs, CurMod, GDefs, NGArgs).
'$expand_args'([A|GArgs], CurMod, [_|GDefs], [A|NGArgs]) :-
'$expand_args'(GArgs, CurMod, GDefs, NGArgs).
'$expand_args'([], _, [], _, []).
'$expand_args'([A|GArgs], CurMod, [0|GDefs], HVars, [NA|NGArgs]) :-
'$do_expand'(A, CurMod, HVars, NA), !,
'$expand_args'(GArgs, CurMod, GDefs, HVars, NGArgs).
'$expand_args'([A|GArgs], CurMod, [_|GDefs], HVars, [A|NGArgs]) :-
'$expand_args'(GArgs, CurMod, GDefs, HVars, NGArgs).
% args are:
% goal to expand
@ -385,7 +385,7 @@ expand_goal(G, G).
% head variables.
'$complete_goal_expansion'(G, CurMod, MM, HM, G1, GO, HVars) :-
% '$pred_goal_expansion_on',
'$do_expand'(G, CurMod, GI),
'$do_expand'(G, CurMod, HVars, GI),
GI \== G, !,
'$module_expansion'(GI, G1, GO, CurMod, MM, HM, HVars).
'$complete_goal_expansion'(G, M, _CM, HM, G1, G2, _HVars) :-