~ chicken-core (chicken-5) 8def727da41593977bc7a40cfcb69ebc76a7b258


commit 8def727da41593977bc7a40cfcb69ebc76a7b258
Author:     Peter Bex <address@hidden>
AuthorDate: Sun Mar 4 17:51:47 2012 +0100
Commit:     felix <felix@call-with-current-continuation.org>
CommitDate: Fri Mar 16 08:24:59 2012 +0100

    Also convert ##sys#make-structure to use and-let* like the vector-ref and list-ref result type special cases
    
    Signed-off-by: felix <felix@call-with-current-continuation.org>

diff --git a/scrutinizer.scm b/scrutinizer.scm
index 8d733f5f..b6c78319 100755
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -2142,17 +2142,17 @@
 
 (define-special-case ##sys#make-structure
   (lambda (node args rtypes)
-    (or (let ((subs (node-subexpressions node)))
-	  (and (>= (length subs) 2)
-	       (let ((arg1 (second subs)))
-		 (and (eq? 'quote (node-class arg1))
-		      (let ((val (first (node-parameters arg1))))
-			(and (symbol? val)
-			     ;;XXX a dirty hack - we should remove the distinct
-			     ;;    "pointer-vector" type.
-			     (if (eq? 'pointer-vector val)
-				 '(pointer-vector)
-				 `((struct ,val)))))))))
+    (or (and-let* ((subs (node-subexpressions node))
+                   ((>= (length subs) 2))
+                   (arg1 (second subs))
+                   ((eq? 'quote (node-class arg1)))
+                   (val (first (node-parameters arg1)))
+                   ((symbol? val)))
+          ;;XXX a dirty hack - we should remove the distinct
+          ;;    "pointer-vector" type.
+          (if (eq? 'pointer-vector val)
+              '(pointer-vector)
+              `((struct ,val))))
 	rtypes)))
 
 (let ()
Trap