diff --git a/racket/src/cs/rumble.sls b/racket/src/cs/rumble.sls index d5ef8c9536..d99787ec93 100644 --- a/racket/src/cs/rumble.sls +++ b/racket/src/cs/rumble.sls @@ -792,4 +792,5 @@ (set-procedure-impersonator-hash!) (set-vector-impersonator-hash!) (set-box-impersonator-hash!) - (set-cpointer-hash!)) + (set-cpointer-hash!) + (set-exn-srcloc-properties!)) diff --git a/racket/src/cs/rumble/error.ss b/racket/src/cs/rumble/error.ss index 8b4b10c4f8..1d4bb80bba 100644 --- a/racket/src/cs/rumble/error.ss +++ b/racket/src/cs/rumble/error.ss @@ -86,6 +86,14 @@ (struct exn:fail:unsupported exn:fail ()) (struct exn:fail:user exn:fail ()) +(define (set-exn-srcloc-properties!) + (let ([add! (lambda (rtd) + (struct-property-set! prop:exn:srclocs rtd exn:fail:read-srclocs) + (hashtable-set! rtd-props rtd (list prop:exn:srclocs)))]) + (add! struct:exn:fail:read) + (add! struct:exn:fail:read:non-char) + (add! struct:exn:fail:read:eof))) + ;; ---------------------------------------- (define (raise-arguments-error who what . more)