print attributes of variables when attribute_goals/2 is not defined
This commit is contained in:
@@ -9,6 +9,17 @@
|
|||||||
|
|
||||||
:- op(1199, fx, attribute).
|
:- op(1199, fx, attribute).
|
||||||
|
|
||||||
|
% represent the list of attributes belonging to a variable,
|
||||||
|
% of a particular module, as a list of terms of the form
|
||||||
|
% Module:put_atts(V, ListOfAtts).
|
||||||
|
'$default_attr_list'(Module, V, ListOfAtts) :-
|
||||||
|
Module:get_atts(V, Attributes),
|
||||||
|
'$default_attr_list'(Attributes, Module, V, ListOfAtts).
|
||||||
|
|
||||||
|
'$default_attr_list'([PG | PGs], Module, AttrVar, [Module:put_atts(AttrVar, PG) | Gs]) :-
|
||||||
|
'$default_attr_list'(PGs, Module, AttrVar, Gs).
|
||||||
|
'$default_attr_list'([], _, _, []).
|
||||||
|
|
||||||
'$absent_attr'(V, Attr) :-
|
'$absent_attr'(V, Attr) :-
|
||||||
'$get_attr_list'(V, Ls),
|
'$get_attr_list'(V, Ls),
|
||||||
'$absent_from_list'(Ls, Attr).
|
'$absent_from_list'(Ls, Attr).
|
||||||
|
|||||||
@@ -187,7 +187,7 @@ impl Machine {
|
|||||||
self.machine_st.attr_var_init.project_attrs_loc = self.code_repo.code.len();
|
self.machine_st.attr_var_init.project_attrs_loc = self.code_repo.code.len();
|
||||||
self.code_repo.code.extend(code.into_iter());
|
self.code_repo.code.extend(code.into_iter());
|
||||||
}
|
}
|
||||||
Err(_) => panic!("Machine::compile_special_forms() failed at PROJECT_ATTRS"),
|
Err(e) => panic!("Machine::compile_special_forms() failed at PROJECT_ATTRS: {}", e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ call_goals([], _).
|
|||||||
call_goals([AttrVar|AttrVars], Module) :-
|
call_goals([AttrVar|AttrVars], Module) :-
|
||||||
( catch(Module:attribute_goals(AttrVar, Goal),
|
( catch(Module:attribute_goals(AttrVar, Goal),
|
||||||
error(evaluation_error((Module:attribute_goals)/2), attribute_goals/2),
|
error(evaluation_error((Module:attribute_goals)/2), attribute_goals/2),
|
||||||
true),
|
atts:'$default_attr_list'(Module, AttrVar, Goal)),
|
||||||
nonvar(Goal) -> enqueue_goal(Goal)
|
nonvar(Goal) -> enqueue_goal(Goal)
|
||||||
; true
|
; true
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user