re: issue #196
This commit is contained in:
@@ -111,6 +111,9 @@ impl MachineState {
|
||||
HeapCellValue::Addr(Addr::StackCell(fr, sc)) => {
|
||||
query_vars.insert(Addr::StackCell(fr, sc));
|
||||
}
|
||||
HeapCellValue::Addr(Addr::AttrVar(h)) => {
|
||||
query_vars.insert(Addr::AttrVar(h));
|
||||
}
|
||||
_ => {}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,8 +2,8 @@ driver(QueryVars, AttrVars) :-
|
||||
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) :-
|
||||
@@ -27,17 +27,18 @@ call_project_attributes([], _, _).
|
||||
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)
|
||||
@@ -47,8 +48,8 @@ call_attribute_goals([Module | Modules], AttrVars) :-
|
||||
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)
|
||||
),
|
||||
@@ -59,7 +60,18 @@ call_goals([AttrVar|AttrVars], Module, Goals) :-
|
||||
-> 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) :-
|
||||
|
||||
Reference in New Issue
Block a user