~ chicken-core (chicken-5) cdfa2279e57f036f9aa35aad6d1ceedc7f7b5555
commit cdfa2279e57f036f9aa35aad6d1ceedc7f7b5555 Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Wed Mar 21 22:16:59 2012 +0100 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Mon Mar 26 11:07:01 2012 +0200 Only emit warning about not being able to represent exact fractions when the user asked for an exact value and we couldn't deliver (example: #i1/2 should just return 0.5 without warnings) Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/library.scm b/library.scm index c85c98a2..030fad80 100644 --- a/library.scm +++ b/library.scm @@ -2583,23 +2583,22 @@ EOF (define (r-number radix exactness) (set! rat-flag #f) - (let ([tok (r-token)]) - (cond - [(string=? tok ".") - (##sys#read-error port "invalid use of `.'")] - [(and (fx> (##sys#size tok) 0) (char=? (string-ref tok 0) #\#)) - (##sys#read-error port "unexpected prefix in number syntax" tok)] - [else - (let ([val (##sys#string->number tok (or radix 10) exactness)] ) - (cond [val - ;;XXX move this into ##sys#string->number ? - (when (and (##sys#inexact? val) rat-flag) - (##sys#read-warning - port - "cannot represent exact fraction - coerced to flonum" tok) ) - val] - [radix (##sys#read-error port "illegal number syntax" tok)] - [else (build-symbol tok)] ) ) ] ) ) ) + (let ((tok (r-token))) + (cond + ((string=? tok ".") + (##sys#read-error port "invalid use of `.'")) + ((and (fx> (##sys#size tok) 0) (char=? (string-ref tok 0) #\#)) + (##sys#read-error port "unexpected prefix in number syntax" tok)) + (else + (let ((val (##sys#string->number tok (or radix 10) exactness)) ) + (cond (val + (when (and (##sys#inexact? val) (not (eq? exactness 'i)) rat-flag) + (##sys#read-warning + port + "cannot represent exact fraction - coerced to flonum" tok) ) + val) + (radix (##sys#read-error port "illegal number syntax" tok)) + (else (build-symbol tok)) ) ) ) ) ) ) (define (r-number-with-exactness radix) (cond [(char=? #\# (##sys#peek-char-0 port))Trap