Real fix for the issue in the math docs

Commit 92b0e86ed1 turns
out to have been the wrong approach, because there was no mysterious
performance problem with TR. Instead, TR's `define` expanded to new
code that interacted poorly with a macro used in the math docs.

I've kept the refactoring from that commit because I think it still
makes the code clearer, but I've removed the now extraneous comment.
This commit is contained in:
Asumu Takikawa 2014-03-31 23:19:48 -04:00
parent 9e9cc90af8
commit 8a93eeb52b
2 changed files with 3 additions and 5 deletions

View File

@ -9,11 +9,13 @@
(syntax-case stx ()
[(_ e)
(let ([expanded (local-expand #'e (syntax-local-context) #f)])
(syntax-case expanded (define-values)
(syntax-case expanded (define-values begin)
[(define-values (x ...) expr)
(with-syntax ([(y ...) (generate-temporaries #'(x ...))])
(syntax/loc stx
(begin
(define-syntax x (make-rename-transformer #'y)) ...
(define-values (y ...) expr))))]
[(begin e ...)
#'(begin (rename-defines e) ...)]
[_ #'e]))]))

View File

@ -1221,10 +1221,6 @@ This file defines two sorts of primitives. All of them are provided into any mod
;; the first three cases are actually subsumed by the last,
;; but manually expanding to using the : annotation form
;; produces better error messages on duplicate annotations
;;
;; note, these first two cases can be collapsed into one
;; but we keep them separate because in some cases it ruins
;; typechecking performance to merge them.
[(-define nm:id body)
(syntax/loc stx (define nm body))]
[(-define nm:id return:return-ann body)