This commit is contained in:
Mark Thom
2019-10-14 00:07:22 -06:00
parent da89b1af63
commit 83ead46e13
2 changed files with 25 additions and 10 deletions

View File

@@ -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));
}
_ => {}
};
}

View File

@@ -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) :-