re: issue #196
This commit is contained in:
@@ -111,6 +111,9 @@ impl MachineState {
|
|||||||
HeapCellValue::Addr(Addr::StackCell(fr, sc)) => {
|
HeapCellValue::Addr(Addr::StackCell(fr, sc)) => {
|
||||||
query_vars.insert(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, _),
|
gather_modules(AttrVars, Modules0, _),
|
||||||
sort(Modules0, Modules),
|
sort(Modules0, Modules),
|
||||||
call_project_attributes(Modules, QueryVars, AttrVars),
|
call_project_attributes(Modules, QueryVars, AttrVars),
|
||||||
call_attribute_goals(Modules, QueryVars),
|
call_attribute_goals(Modules, call_query_var_goals, QueryVars),
|
||||||
call_attribute_goals(Modules, AttrVars),
|
call_attribute_goals(Modules, call_attr_var_goals, AttrVars),
|
||||||
'$return_from_attribute_goals'.
|
'$return_from_attribute_goals'.
|
||||||
|
|
||||||
enqueue_goals(Goals0) :-
|
enqueue_goals(Goals0) :-
|
||||||
@@ -27,17 +27,18 @@ call_project_attributes([], _, _).
|
|||||||
call_project_attributes([Module|Modules], QueryVars, AttrVars) :-
|
call_project_attributes([Module|Modules], QueryVars, AttrVars) :-
|
||||||
( catch(Module:project_attributes(QueryVars, AttrVars),
|
( catch(Module:project_attributes(QueryVars, AttrVars),
|
||||||
E,
|
E,
|
||||||
'$print_project_attributes_exception'(Module, E))
|
'$print_project_attributes_exception'(Module, E)
|
||||||
|
)
|
||||||
-> true
|
-> true
|
||||||
; true
|
; true
|
||||||
),
|
),
|
||||||
call_project_attributes(Modules, QueryVars, AttrVars).
|
call_project_attributes(Modules, QueryVars, AttrVars).
|
||||||
|
|
||||||
call_attribute_goals([], _).
|
call_attribute_goals([], _, _).
|
||||||
call_attribute_goals([Module | Modules], AttrVars) :-
|
call_attribute_goals([Module | Modules], GoalCaller, AttrVars) :-
|
||||||
call_goals(AttrVars, Module, Goals),
|
call(GoalCaller, AttrVars, Module, Goals),
|
||||||
enqueue_goals(Goals),
|
enqueue_goals(Goals),
|
||||||
call_attribute_goals(Modules, AttrVars).
|
call_attribute_goals(Modules, GoalCaller, AttrVars).
|
||||||
|
|
||||||
'$print_attribute_goals_exception'(Module, E) :-
|
'$print_attribute_goals_exception'(Module, E) :-
|
||||||
( E = error(evaluation_error((Module:attribute_goals)/3), attribute_goals/3)
|
( E = error(evaluation_error((Module:attribute_goals)/3), attribute_goals/3)
|
||||||
@@ -47,8 +48,8 @@ call_attribute_goals([Module | Modules], AttrVars) :-
|
|||||||
nl
|
nl
|
||||||
).
|
).
|
||||||
|
|
||||||
call_goals([], _, []).
|
call_query_var_goals([], _, []).
|
||||||
call_goals([AttrVar|AttrVars], Module, Goals) :-
|
call_query_var_goals([AttrVar|AttrVars], Module, Goals) :-
|
||||||
( catch(( Module:attribute_goals(AttrVar, Goals, RGoals0),
|
( catch(( Module:attribute_goals(AttrVar, Goals, RGoals0),
|
||||||
atts:'$default_attr_list'(Module, AttrVar, RGoals0, RGoals)
|
atts:'$default_attr_list'(Module, AttrVar, RGoals0, RGoals)
|
||||||
),
|
),
|
||||||
@@ -59,7 +60,18 @@ call_goals([AttrVar|AttrVars], Module, Goals) :-
|
|||||||
-> true
|
-> true
|
||||||
; atts:'$default_attr_list'(Module, AttrVar, Goals, RGoals)
|
; 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([], [], _).
|
||||||
gather_modules([AttrVar|AttrVars], Modules, Modules0) :-
|
gather_modules([AttrVar|AttrVars], Modules, Modules0) :-
|
||||||
|
|||||||
Reference in New Issue
Block a user