gather_modules(AttrVars, Modules0, _),
sort(Modules0, Modules),
call_project_attributes(Modules, QueryVars, AttrVars),
- call_attribute_goals(Modules, QueryVars),
- call_attribute_goals(Modules, AttrVars),
+ call_attribute_goals(Modules, call_query_var_goals, QueryVars),
+ call_attribute_goals(Modules, call_attr_var_goals, AttrVars),
'$return_from_attribute_goals'.
enqueue_goals(Goals0) :-
call_project_attributes([Module|Modules], QueryVars, AttrVars) :-
( catch(Module:project_attributes(QueryVars, AttrVars),
E,
- '$print_project_attributes_exception'(Module, E))
+ '$print_project_attributes_exception'(Module, E)
+ )
-> true
; true
),
call_project_attributes(Modules, QueryVars, AttrVars).
-call_attribute_goals([], _).
-call_attribute_goals([Module | Modules], AttrVars) :-
- call_goals(AttrVars, Module, Goals),
+call_attribute_goals([], _, _).
+call_attribute_goals([Module | Modules], GoalCaller, AttrVars) :-
+ call(GoalCaller, AttrVars, Module, Goals),
enqueue_goals(Goals),
- call_attribute_goals(Modules, AttrVars).
+ call_attribute_goals(Modules, GoalCaller, AttrVars).
'$print_attribute_goals_exception'(Module, E) :-
( E = error(evaluation_error((Module:attribute_goals)/3), attribute_goals/3)
nl
).
-call_goals([], _, []).
-call_goals([AttrVar|AttrVars], Module, Goals) :-
+call_query_var_goals([], _, []).
+call_query_var_goals([AttrVar|AttrVars], Module, Goals) :-
( catch(( Module:attribute_goals(AttrVar, Goals, RGoals0),
atts:'$default_attr_list'(Module, AttrVar, RGoals0, RGoals)
),
-> true
; atts:'$default_attr_list'(Module, AttrVar, Goals, RGoals)
),
- call_goals(AttrVars, Module, RGoals).
+ call_query_var_goals(AttrVars, Module, RGoals).
+
+call_attr_var_goals([], _, []).
+call_attr_var_goals([AttrVar|AttrVars], Module, Goals) :-
+ ( catch(Module:attribute_goals(AttrVar, Goals, RGoals),
+ E,
+ '$print_attribute_goals_exception'(Module, E)
+ )
+ -> true
+ ; true
+ ),
+ call_attr_var_goals(AttrVars, Module, RGoals).
gather_modules([], [], _).
gather_modules([AttrVar|AttrVars], Modules, Modules0) :-