probable fix for race condition in check syntax (exposed by test suite)

This commit is contained in:
Robby Findler 2010-12-31 20:14:09 -06:00
parent 3237be6b4e
commit 1d5031c3e6

View File

@ -1249,13 +1249,14 @@ If the namespace does not, they are colored the unbound color.
(close-status-line 'drracket:check-syntax:status) (close-status-line 'drracket:check-syntax:status)
;; do this with some lag ... not great, but should be okay. ;; do this with some lag ... not great, but should be okay.
(let ([err-port (send (send the-tab get-error-report-text) get-err-port)])
(thread (thread
(λ () (λ ()
(flush-output (send (send the-tab get-error-report-text) get-err-port)) (flush-output err-port)
(queue-callback (queue-callback
(λ () (λ ()
(unless (= 0 (send (send the-tab get-error-report-text) last-position)) (unless (= 0 (send (send the-tab get-error-report-text) last-position))
(show-error-report/tab)))))))] (show-error-report/tab))))))))]
[kill-termination [kill-termination
(λ () (λ ()
(unless normal-termination? (unless normal-termination?
@ -1349,6 +1350,7 @@ If the namespace does not, they are colored the unbound color.
(cleanup) (cleanup)
(custodian-shutdown-all user-custodian))))] (custodian-shutdown-all user-custodian))))]
[else [else
(open-status-line 'drracket:check-syntax:status)
(update-status-line 'drracket:check-syntax:status status-eval-compile-time) (update-status-line 'drracket:check-syntax:status status-eval-compile-time)
(eval-compile-time-part-of-top-level sexp) (eval-compile-time-part-of-top-level sexp)
(parameterize ([current-eventspace drs-eventspace]) (parameterize ([current-eventspace drs-eventspace])
@ -1363,6 +1365,7 @@ If the namespace does not, they are colored the unbound color.
(expanded-expression user-namespace user-directory sexp jump-to-id)) (expanded-expression user-namespace user-directory sexp jump-to-id))
(close-status-line 'drracket:check-syntax:status)))))) (close-status-line 'drracket:check-syntax:status))))))
(update-status-line 'drracket:check-syntax:status status-expanding-expression) (update-status-line 'drracket:check-syntax:status status-expanding-expression)
(close-status-line 'drracket:check-syntax:status)
(loop)]))))))))))])) (loop)]))))))))))]))
;; set-directory : text -> void ;; set-directory : text -> void