summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLudovic Court`es2005-06-15 13:47:21 +0000
committerLudovic Court`es2005-06-15 13:47:21 +0000
commit7ad6b0a5a2936cb7b63314d4b24e8b87f9d34315 (patch)
treef29bf740294f8fbe20406dbe65a88ca0abfad2a9 /src
parentd75461bc06e1cba0f29990a2604a4a86cd1c0679 (diff)
downloadskribilo-7ad6b0a5a2936cb7b63314d4b24e8b87f9d34315.tar.gz
skribilo-7ad6b0a5a2936cb7b63314d4b24e8b87f9d34315.tar.lz
skribilo-7ad6b0a5a2936cb7b63314d4b24e8b87f9d34315.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/bigloo/resolve.scm6
1 files changed, 4 insertions, 2 deletions
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)