]> Repositorios git - scryer-prolog.git/commitdiff
move term expansion logic entirely into loader.pl
authorMark Thom <[email protected]>
Mon, 1 Feb 2021 23:50:05 +0000 (16:50 -0700)
committerMark Thom <[email protected]>
Mon, 1 Feb 2021 23:50:05 +0000 (16:50 -0700)
src/loader.pl
src/machine/loader.rs
src/machine/mod.rs
src/term_and_goal_expansion.pl [deleted file]

index 2a472ebf825a05109c94ca836f32d25231dbf133..d0b24f370b1596009d4dd653250aca22cdaef812 100644 (file)
 :- use_module(library(pairs)).
 
 
+'$print_message_and_fail'(Error, Culprit) :-
+%    writeq(error(Error, Culprit)),
+%    nl,
+    '$fail'.
+
+expand_term(Term, ExpandedTerm) :-
+    (  catch(user:term_expansion(Term, ExpandedTerm0),
+             E,
+             loader:'$print_message_and_fail'(E, user:term_expansion)) ->
+       (  var(ExpandedTerm0) ->
+          error:instantiation_error(term_expansion/2)
+       ;  ExpandedTerm0 = [_|_] ->
+          term_expansion_list(ExpandedTerm0, ExpandedTerm, [])
+       ;  expand_term(ExpandedTerm0, ExpandedTerm) % term_expansion(ExpandedTerm0, ExpandedTerm)
+       )
+    ;  Term = ExpandedTerm
+    ).
+
+
+term_expansion_list([], ExpandedTerms, ExpandedTerms).
+term_expansion_list([Term|Terms], ExpandedTermsHead, ExpandedTermsTail) :-
+    expand_term(Term, ExpandedTerm0), % term_expansion(Term, ExpandedTerm0),
+    (  var(ExpandedTerm0) ->
+       error:instantiation_error(term_expansion/2)
+    ;  ExpandedTerm0 = [_|_] ->
+       term_expansion_list(ExpandedTerm0, ExpandedTermsHead, ExpandedTerms0Tail),
+       term_expansion_list(Terms, ExpandedTerms0Tail, ExpandedTermsTail)
+    ;  ExpandedTermsHead = [ExpandedTerm0 | ExpandedTerms0Tail],
+       term_expansion_list(Terms, ExpandedTerms0Tail, ExpandedTermsTail)
+    ).
+
+
+goal_expansion(Goal, Module, ExpandedGoal) :-
+    (  catch(Module:goal_expansion(Goal, ExpandedGoal0),
+             E,
+             loader:'$print_message_and_fail'(E, Module:goal_expansion)) ->
+       (  var(ExpandedGoal0) ->
+          error:instantiation_error(goal_expansion/2)
+       ;  goal_expansion(ExpandedGoal0, Module, ExpandedGoal)
+       )
+    ;  Goal = ExpandedGoal
+    ).
+
+
+
 create_file_load_context(Stream, Path, Evacuable) :-
     '$push_load_context'(Stream, Path),
     '$push_load_state_payload'(Evacuable).
@@ -132,10 +177,6 @@ expand_terms_and_goals(Term, Terms) :-
     ).
 
 
-expand_term(UnexpandedTerm, ExpandedTerm) :-
-    user:term_expansion(UnexpandedTerm, ExpandedTerm).
-
-
 compile_dispatch_or_clause_on_list([], Evacuable, VNs).
 compile_dispatch_or_clause_on_list([Term | Terms], Evacuable, VNs) :-
     compile_dispatch_or_clause(Term, Evacuable, VNs),
@@ -158,13 +199,13 @@ compile_dispatch((:- Declaration), Evacuable, _VNs) :-
        compile_declaration(Declaration, Evacuable)
     ).
 compile_dispatch(term_expansion(Term, Terms), Evacuable, VNs) :-
-    '$add_term_expansion_clause'('$term_expansion'(Term, Terms), Evacuable, VNs).
+    '$add_term_expansion_clause'(term_expansion(Term, Terms), Evacuable, VNs).
 compile_dispatch((term_expansion(Term, Terms) :- Body), Evacuable, VNs) :-
-    '$add_term_expansion_clause'(('$term_expansion'(Term, Terms) :- Body), Evacuable, VNs).
+    '$add_term_expansion_clause'((term_expansion(Term, Terms) :- Body), Evacuable, VNs).
 compile_dispatch(user:term_expansion(Term, Terms), Evacuable, VNs) :-
-    '$add_term_expansion_clause'('$term_expansion'(Term, Terms), Evacuable, VNs).
+    '$add_term_expansion_clause'(term_expansion(Term, Terms), Evacuable, VNs).
 compile_dispatch((user:term_expansion(Term, Terms) :- Body), Evacuable, VNs) :-
-    '$add_term_expansion_clause'(('$term_expansion'(Term, Terms) :- Body), Evacuable, VNs).
+    '$add_term_expansion_clause'((term_expansion(Term, Terms) :- Body), Evacuable, VNs).
 compile_dispatch(goal_expansion(Term, Terms), Evacuable, VNs) :-
     prolog_load_context(module, Target),
     '$add_goal_expansion_clause'(Target, goal_expansion(Term, Terms), Evacuable, VNs).
@@ -263,6 +304,7 @@ load_context_path(Module, Path) :-
        Module = Path
     ).
 
+
 use_module(Module, Exports, Evacuable) :-
     (  var(Module) ->
        instantiation_error(load/1)
@@ -334,9 +376,9 @@ strip_module(Goal, M, G) :-
 expand_subgoal(UnexpandedGoals, MS, Module, ExpandedGoals, HeadVars) :-
     (  var(UnexpandedGoals) ->
        UnexpandedGoals = ExpandedGoals
-    ;  user:goal_expansion(UnexpandedGoals, Module, UnexpandedGoals1),
+    ;  goal_expansion(UnexpandedGoals, Module, UnexpandedGoals1),
        (  Module \== user ->
-          user:goal_expansion(UnexpandedGoals1, user, Goals)
+          goal_expansion(UnexpandedGoals1, user, Goals)
        ;  Goals = UnexpandedGoals1
        ),
        (  inner_meta_specs(MS, Goals, _, MetaSpecs) ->
@@ -393,9 +435,9 @@ expand_goal(UnexpandedGoals, Module, ExpandedGoals) :-
 expand_goal(UnexpandedGoals, Module, ExpandedGoals, HeadVars) :-
     (  var(UnexpandedGoals) ->
        UnexpandedGoals = ExpandedGoals
-    ;  user:goal_expansion(UnexpandedGoals, Module, UnexpandedGoals1),
+    ;  goal_expansion(UnexpandedGoals, Module, UnexpandedGoals1),
        (  Module \== user ->
-          user:goal_expansion(UnexpandedGoals1, user, Goals)
+          goal_expansion(UnexpandedGoals1, user, Goals)
        ;  Goals = UnexpandedGoals1
        ),
        (  Goals = (Goal0, Goals0) ->
index 88b023e7e5a218fb7b9e06514022105a7366c644..4560b682f0c380232626ee0d9a4f6e193c35901b 100644 (file)
@@ -1045,7 +1045,7 @@ impl Machine {
             let term = loader.read_term_from_heap(temp_v!(1))?;
 
             loader.incremental_compile_clause(
-                (clause_name!("$term_expansion"), 2),
+                (clause_name!("term_expansion"), 2),
                 term,
                 CompilationTarget::User,
                 false,
index 9fc7272026d6424872f4f4627bcffd1814615c14..a24863808156b2dc7dd7b51dfc512622d6bb0226 100644 (file)
@@ -345,15 +345,6 @@ impl Machine {
 
         lib_path.pop(); // remove the "lib" at the end
 
-        bootstrapping_compile(
-            Stream::from(include_str!("../term_and_goal_expansion.pl")),
-            &mut wam,
-            ListingSource::from_file_and_path(
-                clause_name!("term_and_goal_expansion.pl"),
-                lib_path.clone(),
-            ),
-        ).unwrap();
-
         bootstrapping_compile(
             Stream::from(include_str!("../loader.pl")),
             &mut wam,
diff --git a/src/term_and_goal_expansion.pl b/src/term_and_goal_expansion.pl
deleted file mode 100644 (file)
index c02bbc9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-% Unsure how to handle the printing of exceptions from term & goal expansion.
-
-'$print_message_and_fail'(Error, Culprit) :-
-%    writeq(error(Error, Culprit)),
-%    nl,
-    '$fail'.
-
-term_expansion(Term, ExpandedTerm) :-
-    (  catch(user:'$term_expansion'(Term, ExpandedTerm0),
-             E,
-             user:'$print_message_and_fail'(E, user:term_expansion)) ->
-       (  var(ExpandedTerm0) ->
-          error:instantiation_error(term_expansion/2)
-       ;  ExpandedTerm0 = [_|_] ->
-          term_expansion_list(ExpandedTerm0, ExpandedTerm, [])
-       ;  term_expansion(ExpandedTerm0, ExpandedTerm)
-       )
-    ;  Term = ExpandedTerm
-    ).
-
-
-term_expansion_list([], ExpandedTerms, ExpandedTerms).
-term_expansion_list([Term|Terms], ExpandedTermsHead, ExpandedTermsTail) :-
-    term_expansion(Term, ExpandedTerm0),
-    (  var(ExpandedTerm0) ->
-       error:instantiation_error(term_expansion/2)
-    ;  ExpandedTerm0 = [_|_] ->
-       term_expansion_list(ExpandedTerm0, ExpandedTermsHead, ExpandedTerms0Tail),
-       term_expansion_list(Terms, ExpandedTerms0Tail, ExpandedTermsTail)
-    ;  ExpandedTermsHead = [ExpandedTerm0 | ExpandedTerms0Tail],
-       term_expansion_list(Terms, ExpandedTerms0Tail, ExpandedTermsTail)
-    ).
-
-
-goal_expansion(Goal, Module, ExpandedGoal) :-
-    (  catch(Module:goal_expansion(Goal, ExpandedGoal0),
-             E,
-             user:'$print_message_and_fail'(E, Module:goal_expansion)) ->
-       (  var(ExpandedGoal0) ->
-          error:instantiation_error(goal_expansion/2)
-       ;  goal_expansion(ExpandedGoal0, Module, ExpandedGoal)
-       )
-    ;  Goal = ExpandedGoal
-    ).