From 3029867e9f9bb67a6228b1dfe512787f6e26567b Mon Sep 17 00:00:00 2001 From: Ryan Culpepper Date: Thu, 29 Jan 2015 20:37:50 -0500 Subject: [PATCH] fix reified-syntax-class-curry (missing role argument) --- pkgs/racket-test/tests/stxparse/test-exp.rkt | 10 ++++++++++ racket/collects/syntax/parse/experimental/reflect.rkt | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test/tests/stxparse/test-exp.rkt b/pkgs/racket-test/tests/stxparse/test-exp.rkt index 174e86e0c2..672456c025 100644 --- a/pkgs/racket-test/tests/stxparse/test-exp.rkt +++ b/pkgs/racket-test/tests/stxparse/test-exp.rkt @@ -30,6 +30,16 @@ #rx"expected natural number greater than 5") (terx whatever (~reflect x (r-nat> 0) #:attributes (wrong nope))) + (define r-nat>1 (reified-syntax-class-curry r-nat> 1)) + + (tok (1 2 -3 -4 5) ((~or (~reflect yes (r-nat>1) #:attributes (diff)) no) ...) + (and (s= (yes ...) '(2 5)) + (s= (yes.diff ...) '(1 4)) + (s= (no ...) '(1 -3 -4)))) + (terx 0 (~reflect pos (r-nat>1)) + #rx"expected natural number greater than 1") + (terx whatever (~reflect x (r-nat>1) #:attributes (wrong nope))) + (define-splicing-syntax-class opt (pattern (~seq #:a a:expr))) (define r-opt (reify-syntax-class opt)) diff --git a/racket/collects/syntax/parse/experimental/reflect.rkt b/racket/collects/syntax/parse/experimental/reflect.rkt index 107438a902..e0c6f76b53 100644 --- a/racket/collects/syntax/parse/experimental/reflect.rkt +++ b/racket/collects/syntax/parse/experimental/reflect.rkt @@ -72,9 +72,9 @@ (arity minpos* maxpos* minkws* maxkws*))])] [curried-parser (make-keyword-procedure - (lambda (kws2 kwargs2 x cx pr es fh cp success . rest2) + (lambda (kws2 kwargs2 x cx pr es fh cp rl success . rest2) (let-values ([(kws kwargs) (merge2 kws1 kws2 kwargs1 kwargs2)]) - (keyword-apply parser kws kwargs x cx pr es fh cp success + (keyword-apply parser kws kwargs x cx pr es fh cp rl success (append rest1 rest2)))))] [ctor (cond [(reified-syntax-class? r)