I sent a test case to Matthew, since I wasn't sure how best to include
it: it is a syntax error in the old version of the code. Here it is:
(define (in-X #:x seq) seq)
(for/list ([x (in-X #:x '(1 2 3))]) x)
;; => '(1 2 3)
(define-sequence-syntax in-X* (lambda () #'in-X) (lambda (stx) #f))
(for/list ([x (in-X* #:x '(1 2 3))]) x)
;; => '(1 2 3), previously syntax error
Ryan
On 02/06/2013 08:08 PM, Robby Findler wrote:
Test case?
Robby
On Wed, Feb 6, 2013 at 5:08 PM, <ry...@racket-lang.org
<mailto:ry...@racket-lang.org>> wrote:
ryanc has updated `master' from 117c81e2a6 to a85a71984d.
http://git.racket-lang.org/plt/117c81e2a6..a85a71984d
=====[ One Commit ]=====================================================
Directory summary:
100.0% collects/racket/private/
~~~~~~~~~~
a85a719 Ryan Culpepper <ry...@racket-lang.org
<mailto:ry...@racket-lang.org>> 2013-02-06 17:55
:
| preserve lexical context, src, etc for sequence syntax expansion
|
| The previous version of the code replaced the implicit #%app with
| the kernel #%app (ie, #%plain-app), causing sequence functions
| that take keyword arguments to fail.
:
M collects/racket/private/for.rkt | 3 ++-
=====[ Overall Diff ]===================================================
collects/racket/private/for.rkt
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--- OLD/collects/racket/private/for.rkt
+++ NEW/collects/racket/private/for.rkt
@@ -118,7 +118,8 @@
(if (identifier? stx)
(proc1)
(datum->syntax stx
- #`(#,(proc1) . #,(cdr (syntax-e stx)))
+ ;; Use cons, not #`(#,op #,@args),
to avoid replacing implicit #%app binding
+ (cons (proc1) (cdr (syntax-e stx)))
stx
stx)))
proc1)
_________________________
Racket Developers list:
http://lists.racket-lang.org/dev
_________________________
Racket Developers list:
http://lists.racket-lang.org/dev