racket/collects/errortrace/lang/body.rkt
2010-10-05 09:18:46 -04:00

22 lines
704 B
Racket

#lang racket/base
(require (for-syntax racket/base
syntax/strip-context
"../errortrace-lib.rkt"))
(provide (rename-out [module-begin #%module-begin]))
(define-syntax (module-begin stx)
(syntax-case stx ()
[(_ lang . body)
(let ([e (annotate-top
(syntax-local-introduce
(local-expand #`(module . #,(strip-context #`(n lang . body)))
'top-level
null))
0)])
(syntax-case e ()
[(mod nm lang (mb . body))
#`(#%plain-module-begin
(require (only-in lang) errortrace/errortrace-key)
. body)]))]))