~ chicken-core (chicken-5) 38483b82007792d3a42d2bfa1938feff6c459c22
commit 38483b82007792d3a42d2bfa1938feff6c459c22 Author: Evan Hanson <evhan@foldling.org> AuthorDate: Tue Sep 9 21:47:08 2014 +1200 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Wed Sep 10 09:48:00 2014 +0200 Avoid building unnecessary forall types during simplification when no typevars are used Previously, if typevars were given in a polymorphic type specification but none of them were actually used within its body, type simplification would still produce a "forall" type, e.g. `(forall () list)` where simply a `list` would do. This patch fixes these cases by only keeping the "forall" when at least one typevar is used within a type's body. Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/scrutinizer.scm b/scrutinizer.scm index c4379331..77b14f58 100644 --- a/scrutinizer.scm +++ b/scrutinizer.scm @@ -1389,7 +1389,7 @@ (cdr e))) (else t))))) (let ((t2 (simplify t))) - (when (pair? typeenv) + (when (pair? used) (set! t2 `(forall ,(filter-map (lambda (e)Trap