call project_attributes from top-level (#846)

This commit is contained in:
Mark Thom
2021-03-04 16:05:01 -07:00
parent 34c3035c2b
commit 1b9db035ba
5 changed files with 5 additions and 14 deletions

View File

@@ -17,11 +17,10 @@ pub(super) struct AttrVarInitializer {
pub(super) cp: LocalCodePtr, pub(super) cp: LocalCodePtr,
pub(super) instigating_p: LocalCodePtr, pub(super) instigating_p: LocalCodePtr,
pub(super) verify_attrs_loc: usize, pub(super) verify_attrs_loc: usize,
pub(super) project_attrs_loc: usize,
} }
impl AttrVarInitializer { impl AttrVarInitializer {
pub(super) fn new(verify_attrs_loc: usize, project_attrs_loc: usize) -> Self { pub(super) fn new(verify_attrs_loc: usize) -> Self {
AttrVarInitializer { AttrVarInitializer {
attribute_goals: vec![], attribute_goals: vec![],
attr_var_queue: vec![], attr_var_queue: vec![],
@@ -29,7 +28,6 @@ impl AttrVarInitializer {
instigating_p: LocalCodePtr::default(), instigating_p: LocalCodePtr::default(),
cp: LocalCodePtr::default(), cp: LocalCodePtr::default(),
verify_attrs_loc, verify_attrs_loc,
project_attrs_loc,
} }
} }

View File

@@ -38,7 +38,7 @@ impl MachineState {
e: 0, e: 0,
num_of_args: 0, num_of_args: 0,
cp: LocalCodePtr::default(), cp: LocalCodePtr::default(),
attr_var_init: AttrVarInitializer::new(0, 0), attr_var_init: AttrVarInitializer::new(0),
fail: false, fail: false,
heap: Heap::new(), heap: Heap::new(),
mode: MachineMode::Write, mode: MachineMode::Write,

View File

@@ -200,12 +200,6 @@ impl Machine {
self.machine_st.attr_var_init.verify_attrs_loc = code_index.local().unwrap(); self.machine_st.attr_var_init.verify_attrs_loc = code_index.local().unwrap();
} }
} }
if let Some(module) = self.indices.modules.get(&clause_name!("$project_atts")) {
if let Some(code_index) = module.code_dir.get(&(clause_name!("driver"), 2)) {
self.machine_st.attr_var_init.project_attrs_loc = code_index.local().unwrap();
}
}
} }
pub fn run_top_level(&mut self) { pub fn run_top_level(&mut self) {

View File

@@ -1,11 +1,9 @@
:- module('$project_atts', [copy_term/3]). :- module('$project_atts', [copy_term/3]).
driver(QueryVars, AttrVars) :- project_attributes(QueryVars, AttrVars) :-
gather_attr_modules(AttrVars, Modules0), gather_attr_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, '$project_atts':call_query_var_goals, QueryVars),
call_attribute_goals(Modules, '$project_atts':call_attr_var_goals, AttrVars).
enqueue_goals(Goals0) :- enqueue_goals(Goals0) :-
nonvar(Goals0), nonvar(Goals0),

View File

@@ -266,6 +266,7 @@ trailing_period_is_ambiguous(Value) :-
write_eqs_and_read_input(B, VarList) :- write_eqs_and_read_input(B, VarList) :-
term_variables(VarList, Vars0), term_variables(VarList, Vars0),
'$term_attributed_variables'(VarList, AttrVars), '$term_attributed_variables'(VarList, AttrVars),
'$project_atts':project_attributes(Vars0, AttrVars),
copy_term(AttrVars, AttrVars, AttrGoals), copy_term(AttrVars, AttrVars, AttrGoals),
term_variables(AttrGoals, AttrGoalVars), term_variables(AttrGoals, AttrGoalVars),
append([Vars0, AttrGoalVars, AttrVars], Vars), append([Vars0, AttrGoalVars, AttrVars], Vars),