~ 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