test-syntax-case.rkt (819B)
1 #lang racket 2 3 (require (for-syntax preexpanded/syntax-case)) 4 5 (define-syntax (define-a*-b stx) 6 (syntax-case stx () 7 [(_ name [foo val] ...) 8 #`(define-syntax (name stx2) 9 #,(preexpanded-syntax-case/no-bind define-a*-b stx2 10 [(_ #:a (~literal foo)) #'val] 11 (foo val) 12 ... 13 [(_ #:b) #'2]))])) 14 15 (define-a*-b myab [a 10] [b 20] [c 30]) 16 (myab #:a a) 17 (myab #:a b) 18 (myab #:a c) 19 ;(myab #:a d) ;; Invalid syntax, as expected 20 ;(myab #:a) ;; Invalid syntax, as expected 21 ;(myab #:a a e) ;; Invalid syntax, as expected 22 (myab #:b) 23 24 #;(preexpanded-syntax-case/no-bind mymacro #'(mymacro #:a +) 25 [(_ #:a (~literal +)) 1] 26 [(_ #:b) 2]) 27 28 #;(preexpanded-syntax-case/no-bind mymacro #'(mymacro #:b foo) 29 [(_ #:a (~literal +)) 1] 30 [(_ #:b (~datum foo)) 2])