From 7ad6b0a5a2936cb7b63314d4b24e8b87f9d34315 Mon Sep 17 00:00:00 2001
From: Ludovic Court`es
Date: Wed, 15 Jun 2005 13:47:21 +0000
Subject: Fix the resolution mechanism so that there can be dependencies among
 `unresolved' objects.

* src/bigloo/resolve.scm (do-resolve! node::%unresolved): Don't
  recurse after calling `proc'.
  (do-resolve! node::%container):  Resolve its body even if its
  parent is not unspecified (see message <20050120091114.GB337@laas.fr>,
  dated Jan. 20th, 2005, to the Skribe mailing list).

git-archimport-id: lcourtes@laas.fr--2004-libre/skribilo--devel--1.2--patch-2
---
 src/bigloo/resolve.scm | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/bigloo/resolve.scm b/src/bigloo/resolve.scm
index 7507560..8248a4f 100644
--- a/src/bigloo/resolve.scm
+++ b/src/bigloo/resolve.scm
@@ -99,7 +99,9 @@
 	 (debug-item "env0=" env0)
 	 (debug-item "env=" env)
 	 (if (not (eq? parent #unspecified))
-	     node
+	     (let ((e `((parent ,node) ,@env ,@env0)))
+		(set! body (do-resolve! body engine e))
+		node)
 	     (let ((p (assq 'parent env0)))
 		(set! parent (and (pair? p) (pair? (cdr p)) (cadr p)))
 		(if (pair? options)
@@ -142,7 +144,7 @@
       (with-access::%unresolved node (proc parent loc)
 	 (let ((p (assq 'parent env)))
 	    (set! parent (and (pair? p) (pair? (cdr p)) (cadr p))))
-	 (let ((res (resolve! (proc node engine env) engine env)))
+	 (let ((res (proc node engine env)))
 	    (if (ast? res) (%ast-loc-set! res loc))
 	    (debug-item "res=" res)
 	    (set! *unresolved* #t)
-- 
cgit v1.2.3