summaryrefslogtreecommitdiff
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
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
-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)