www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

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)]))