From be04593a3128ca762ae9e20496e8aecb046de55a Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 12 May 2014 08:09:23 -0600 Subject: [PATCH] fix bug in insertion of guards to prevent use before definition --- pkgs/racket-pkgs/racket-test/tests/racket/syntax.rktl | 4 ++++ racket/src/racket/src/letrec_check.c | 4 +--- racket/src/racket/src/schvers.h | 4 ++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/racket-pkgs/racket-test/tests/racket/syntax.rktl b/pkgs/racket-pkgs/racket-test/tests/racket/syntax.rktl index 3c20cc0cd2..cabb689011 100644 --- a/pkgs/racket-pkgs/racket-test/tests/racket/syntax.rktl +++ b/pkgs/racket-pkgs/racket-test/tests/racket/syntax.rktl @@ -90,6 +90,10 @@ (err/rt-test (let ([x (lambda () (define d d) d)]) (x)) exn:fail:contract:variable?) (err/rt-test ((lambda () (define d d) d)) exn:fail:contract:variable?) (err/rt-test ((lambda () (define d (set! d #f)) d)) exn:fail:contract:variable?) +(err/rt-test (letrec ([y (let ([o x]) (o))] + [x (void)]) + y) + exn:fail:contract:variable?) (test '(3 4 5 6) (lambda x x) 3 4 5 6) (test '(5 6) (lambda (x y . z) z) 3 4 5 6) (test 'second (lambda () (cons 'first 2) 'second)) diff --git a/racket/src/racket/src/letrec_check.c b/racket/src/racket/src/letrec_check.c index 0e9e7aaf55..e63e828bf9 100644 --- a/racket/src/racket/src/letrec_check.c +++ b/racket/src/racket/src/letrec_check.c @@ -1203,9 +1203,7 @@ static Scheme_Object *letrec_check_lets(Scheme_Object *o, Letrec_Check_Frame *ol } } - if (frame_type == FRAME_TYPE_LETREC) { - clv->value = val; - } + clv->value = val; body = clv->body; } diff --git a/racket/src/racket/src/schvers.h b/racket/src/racket/src/schvers.h index 72d583517d..c10db27ce3 100644 --- a/racket/src/racket/src/schvers.h +++ b/racket/src/racket/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "6.0.1.8" +#define MZSCHEME_VERSION "6.0.1.9" #define MZSCHEME_VERSION_X 6 #define MZSCHEME_VERSION_Y 0 #define MZSCHEME_VERSION_Z 1 -#define MZSCHEME_VERSION_W 8 +#define MZSCHEME_VERSION_W 9 #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)