From 4952fa6db9d3e52448c7b2c0b51e746276543982 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Sat, 5 Jul 2008 04:51:15 +0000 Subject: [PATCH] simplified hopeless-exception raising svn: r10615 --- collects/drscheme/private/module-language.ss | 40 +++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/collects/drscheme/private/module-language.ss b/collects/drscheme/private/module-language.ss index 04d76011f3..09ac00321b 100644 --- a/collects/drscheme/private/module-language.ss +++ b/collects/drscheme/private/module-language.ss @@ -246,29 +246,23 @@ (define hopeless-repl (make-thread-cell #t)) (define (raise-hopeless-exception exn [prefix #f]) (define rep (drscheme:rep:current-rep)) - - ;; if we don't have the drscheme rep, then we just raise - ;; the exception as normal. (I don't think this can happen...?) - (unless rep - (raise exn)) - - (let ([send-over - (λ (t) - (let ([s (make-semaphore 0)]) - (parameterize ([current-eventspace drscheme:init:system-eventspace]) - (queue-callback - (λ () - (t) - (semaphore-post s)))) - (semaphore-wait s)))]) - - (send-over (λ () (send rep set-show-no-user-evaluation-message? #f))) - (when prefix - (fprintf (current-error-port) "Module Language: ~a\n" prefix)) - ((error-display-handler) (exn-message exn) exn) - (send-over - (λ () (send rep insert-warning "\nInteractions disabled."))) - (custodian-shutdown-all (send rep get-user-custodian)))) + ;; if we don't have the drscheme rep, then we just raise the exception as + ;; normal. (It can happen in some rare cases like having a single empty + ;; scheme box in the definitions.) + (unless rep (raise exn)) + (when prefix (fprintf (current-error-port) "Module Language: ~a\n" prefix)) + ((error-display-handler) (exn-message exn) exn) + ;; do the rep-related work carefully -- using drscheme's eventspace, and + ;; wait for it to finish before we continue. + (let ([s (make-semaphore 0)]) + (parameterize ([current-eventspace drscheme:init:system-eventspace]) + (queue-callback + (λ () + (send* rep (insert-warning "\nInteractions disabled.") + (set-show-no-user-evaluation-message? #f)) + (semaphore-post s)))) + (semaphore-wait s)) + (custodian-shutdown-all (send rep get-user-custodian))) (define (raise-hopeless-syntax-error . error-args) (with-handlers ([exn? raise-hopeless-exception]) (apply raise-syntax-error '|Module Language|