The attached patch fixes a problem of type-declarations like

(: foo (number --> (number -> number)))

Validation of the type in the scrutinizer will ignore "foo" being
declared "pure" (the nested procedure-type causes an overwrite
of the variable that holds the "purity" status).

This patch fixes #883.


cheers,
felix
>From abd5c53bb4700ce7e08e129d1890cf9939475dee Mon Sep 17 00:00:00 2001
From: felix <[email protected]>
Date: Sun, 15 Jul 2012 23:19:58 +0200
Subject: [PATCH] retain whether procedure-type is pure when using nested procedure types in type-declarations

---
 scrutinizer.scm |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/scrutinizer.scm b/scrutinizer.scm
index 8c2788e..37eefbc 100755
--- a/scrutinizer.scm
+++ b/scrutinizer.scm
@@ -1996,7 +1996,7 @@
 	     (lambda (p)
 	       (let* ((cleanf (eq? '--> (car p)))
 		      (ok (or (not rec) (not cleanf))))
-		 (set! clean cleanf)
+		 (unless rec (set! clean cleanf))
 		 (let ((cp (memq ': (cdr p))))
 		   (cond ((not cp)
 			  (and ok
-- 
1.7.0.4

_______________________________________________
Chicken-hackers mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to