From 9f5ac23d7200ad03d920fdce0f4ee6b291786e37 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 28 Jan 2008 16:34:18 +0100 Subject: Properly handle non-list pairs in `resolve' and `verify'. * src/guile/skribilo/resolve.scm (do-resolve!): Return N* if `pair?'. * src/guile/skribilo/verify.scm (verify): Add special treatment if OBJ is not a list. --- src/guile/skribilo/resolve.scm | 5 +++-- src/guile/skribilo/verify.scm | 10 +++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'src/guile') diff --git a/src/guile/skribilo/resolve.scm b/src/guile/skribilo/resolve.scm index efecd8d..fbfcd1a 100644 --- a/src/guile/skribilo/resolve.scm +++ b/src/guile/skribilo/resolve.scm @@ -1,7 +1,7 @@ ;;; resolve.scm -- Skribilo reference resolution. ;;; +;;; Copyright 2005, 2006, 2008 Ludovic Courtès ;;; Copyright 2003, 2004 Erick Gallesio - I3S-CNRS/ESSI -;;; Copyright 2005, 2006 Ludovic Courtès ;;; ;;; ;;; This program is free software; you can redistribute it and/or modify @@ -100,7 +100,8 @@ (Loop (cdr n*))) ((pair? n*) (set-car! n* (do-resolve! (car n*) engine env)) - (set-cdr! n* (do-resolve! (cdr n*) engine env))) + (set-cdr! n* (do-resolve! (cdr n*) engine env)) + n*) (else (raise (condition (&invalid-argument-error (proc-name "do-resolve!") diff --git a/src/guile/skribilo/verify.scm b/src/guile/skribilo/verify.scm index 2dc1333..f14138f 100644 --- a/src/guile/skribilo/verify.scm +++ b/src/guile/skribilo/verify.scm @@ -1,7 +1,7 @@ ;;; verify.scm -- Skribe AST verification. ;;; -;;; Copyright 2003-2004 Erick Gallesio - I3S-CNRS/ESSI -;;; Copyright 2005, 2007 Ludovic Courtès +;;; Copyright 2005, 2007, 2008 Ludovic Courtès +;;; Copyright 2003, 2004 Erick Gallesio - I3S-CNRS/ESSI ;;; ;;; ;;; This program is free software; you can redistribute it and/or modify @@ -96,7 +96,11 @@ ;;; PAIR (define-method (verify (obj ) e) - (for-each (lambda (x) (verify x e)) obj) + (if (list? obj) + (for-each (lambda (o) (verify o e)) obj) + (begin + (verify (car obj) e) + (verify (cdr obj) e))) obj) ;;; PROCESSOR -- cgit v1.2.3