diff --git a/collects/lang/private/rewrite-error-message.rkt b/collects/lang/private/rewrite-error-message.rkt index 1cda5e5d87..8799658aa9 100644 --- a/collects/lang/private/rewrite-error-message.rkt +++ b/collects/lang/private/rewrite-error-message.rkt @@ -133,6 +133,8 @@ (lambda (all one) "expects a ")) (list #rx"list or cyclic list" (lambda (all) "list")) + (list #rx"cannot set variable before its definition\n variable:" + (lambda (all) "cannot set variable before its definition:")) ;; When do these show up? I see only `#' errors, currently. (list (regexp-quote "#(struct:object:image% ...)") (lambda (all) "an image")) diff --git a/collects/tests/htdp-lang/advanced.rktl b/collects/tests/htdp-lang/advanced.rktl index 95520ca92f..56236decb9 100644 --- a/collects/tests/htdp-lang/advanced.rktl +++ b/collects/tests/htdp-lang/advanced.rktl @@ -70,9 +70,12 @@ (htdp-syntax-test #'(set! set! 2) "set!: expected a variable after set!, but found a set!") (htdp-syntax-test #'(set! x 1) "x: this variable is not defined") (htdp-syntax-test #'(lambda (x) (set! x 2)) "set!: expected a mutable variable after set!, but found a variable that cannot be modified: x") - (htdp-syntax-test #'(let ([x 5]) (lambda (x) (set! x 2))) "set!: expected a mutable variable after set!, but found a variable that cannot be modified") +(htdp-top (set! x 5)) +(htdp-err/rt-test (define x 10) "set!: cannot set variable before its definition: x") +(htdp-top-pop 1) + (htdp-top (define x 5)) (htdp-top (set! x 'hello)) (htdp-test 'hello 'access-x x)