From 295b5daa2dd56cde543393805445f834bc7ab7fb Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Wed, 14 Jul 2010 17:07:18 -0400 Subject: [PATCH] Fixed an infinite loop. original commit: f21454e71141feb491c88cf7f83636ee55c76775 --- collects/typed-scheme/optimizer/inexact-complex.rkt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/collects/typed-scheme/optimizer/inexact-complex.rkt b/collects/typed-scheme/optimizer/inexact-complex.rkt index 07da71f9..99ec1c38 100644 --- a/collects/typed-scheme/optimizer/inexact-complex.rkt +++ b/collects/typed-scheme/optimizer/inexact-complex.rkt @@ -206,7 +206,18 @@ #:with real-part (unboxed-gensym) #:with imag-part #f #:with (bindings ...) - #`((real-part (->fl #,((optimize) #'e)))))) + #`((real-part (->fl #,((optimize) #'e))))) + (pattern e:expr + #:when (isoftype? #'e -Real) + #:with real-part (unboxed-gensym) + #:with imag-part #f + #:with (bindings ...) + #`((real-part (exact->inexact #,((optimize) #'e))))) + (pattern e:expr + #:with (bindings ...) + (error "non exhaustive pattern match") + #:with real-part #f + #:with imag-part #f)) (define-syntax-class inexact-complex-unary-op (pattern (~or (~literal real-part) (~literal flreal-part)) #:with unsafe #'unsafe-flreal-part)