~ 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