diff --git a/collects/drracket/private/syncheck/traversals.rkt b/collects/drracket/private/syncheck/traversals.rkt index 0ab439db10..e156fd40da 100644 --- a/collects/drracket/private/syncheck/traversals.rkt +++ b/collects/drracket/private/syncheck/traversals.rkt @@ -1228,14 +1228,15 @@ (when ed (define pos (syntax-position var)) (define span (syntax-span var)) - (define start (- pos 1)) - (define fin (+ start span)) - (define loc (list ed start fin)) - (module-identifier-mapping-put! - id-to-sets - var - (set-add (module-identifier-mapping-get id-to-sets var set) - loc))))))) + (when (and pos span) + (define start (- pos 1)) + (define fin (+ start span)) + (define loc (list ed start fin)) + (module-identifier-mapping-put! + id-to-sets + var + (set-add (module-identifier-mapping-get id-to-sets var set) + loc)))))))) (module-identifier-mapping-for-each id-to-sets (λ (id locs) diff --git a/collects/tests/drracket/syncheck-direct.rkt b/collects/tests/drracket/syncheck-direct.rkt index 6e7ab1a672..7b272de3e3 100644 --- a/collects/tests/drracket/syncheck-direct.rkt +++ b/collects/tests/drracket/syncheck-direct.rkt @@ -66,3 +66,24 @@ (let ([y 1]) y))))))) (done)) add-arrow-called?)) + +(check-not-exn + (λ () + (define annotations + (new (class (annotations-mixin object%) + (super-new) + (define/override (syncheck:find-source-object stx) + stx)))) + + (define base-namespace (make-base-namespace)) + (define-values (add-syntax done) + (make-traversal base-namespace #f)) + + (parameterize ([current-annotations annotations] + [current-namespace base-namespace]) + (eval '(require (for-syntax racket/base))) + (add-syntax + (expand + '(let-syntax ([m (λ (_) #`(let ([x 1]) x))]) + (m)))) + (done)))) \ No newline at end of file