same-syntax.rkt (616B)
1 #lang racket 2 3 (require "annotate-syntax.rkt" 4 sexp-diff 5 rackunit) 6 7 (provide check-same-syntax) 8 9 (define (same-syntax! a b) 10 (define answer (equal? (annotate-syntax a #:srcloc+scopes? #f) 11 (annotate-syntax b #:srcloc+scopes? #f))) 12 (unless answer 13 (pretty-write 14 (sexp-diff (annotate-syntax a) 15 (annotate-syntax b))) 16 (displayln a) 17 (displayln b)) 18 answer) 19 20 (define-syntax (check-same-syntax stx) 21 (syntax-case stx () 22 [(_ a b) 23 (datum->syntax #'here 24 `(check-true (same-syntax! ,#'a ,#'b)) 25 stx)]))