test-missing-nested.rkt (2076B)
1 #lang racket 2 (require subtemplate/override 3 rackunit) 4 5 (check-equal? (syntax-parse #'((yy 1 2) #:kw (yyy 3 4)) 6 [({~and {~or (y x …) :keyword}} …) 7 (syntax->datum 8 (quasitemplate 9 (0 #,(list (quasitemplate 10 (?? (~~~ 11 y 12 #,(list x) ... 13 ~~~) 14 oops))) 15 ... 9)))]) 16 '(0 ((~~~ yy (1) (2) ~~~)) (oops) ((~~~ yyy (3) (4) ~~~)) 9)) 17 18 (check-equal? 19 (syntax-parse #'((y a b 3 d 5 f) #:kw (z g 8 i) #:kww) 20 [({~and {~or (y {~and {~or x:id _}} …) :keyword}} …) 21 (syntax->datum 22 (quasitemplate 23 (0 #,(list (quasitemplate 24 (?? (~~~ 25 y 26 #,(list (template (?? x -)) (template (?? x -))) ... 27 ~~~) 28 oops))) 29 ... 9)))]) 30 '(0 31 ((~~~ y (a a) (b b) (- -) (d d) (- -) (f f) ~~~)) 32 (oops) 33 ((~~~ z (g g) (- -) (i i) ~~~)) 34 (oops) 35 9)) 36 37 (check-equal? (syntax-parse #'((yy 1 2) #:kw (yyy 3 4)) 38 [({~and {~or (y x …) :keyword}} …) 39 (list (?? (list y (?? x '-) …) 'oops) …)]) 40 '((yy 1 2) oops (yyy 3 4))) 41 42 (check-equal? (syntax-parse #'((y a b 3 d 5 f) #:kw (z g 8 i) #:kww) 43 [({~and {~or (y {~and {~or x:id _}} …) :keyword}} …) 44 (list (?? (list y (?? x '-) …) 'oops) …)]) 45 '((y a b - d - f) oops (z g - i) oops)) 46 47 (check-exn 48 #rx"attribute contains an omitted element" 49 (λ () 50 (syntax-parse #'((y a b 3 d 5 f) #:kw (z g 8 i) #:kww) 51 [({~and {~or (y {~and {~or x:id _}} …) :keyword}} …) 52 (list (?? x '-) … …)]))) 53 54 (check-exn 55 #rx"attribute contains an omitted element" 56 (λ () 57 (syntax-parse #'((y a b 3 d 5 f) #:kw (z g 8 i) #:kww) 58 [({~and {~or (y {~and {~or x:id _}} …) :keyword}} …) 59 (define l (?if y (?? x '-) 'oops)) … … 60 l])))