diff --git a/implementation.rkt b/implementation.rkt index 6974b0d..de157f8 100644 --- a/implementation.rkt +++ b/implementation.rkt @@ -285,6 +285,8 @@ (syntax-parser #:context context #:literals (^ * + - ∞ once) + [({~do (displayln this-syntax)} #:oops-nope) + #'trbgfdsctgbrfvdc] [() #'(list)] [rest:not-stx-pair @@ -335,7 +337,7 @@ #`(list-rest-ish [] base ellipsis #,(xl #'rest))] [(:base {~^ once} . rest) #`(list-rest-ish [] base #|no ellipsis|# #,(xl #'rest))] - [(:base {~^ power:nat}) + [(:base {~^ power:nat} . rest) #:with occurrences (gensym 'occurrences) #`(list-rest-ish [(? (λ (_) (= (length occurrences) power)))] (and occurrences base) ooo diff --git a/test/test-match.rkt b/test/test-match.rkt index 3260855..ae0b0d0 100644 --- a/test/test-match.rkt +++ b/test/test-match.rkt @@ -200,9 +200,9 @@ (void)) (test-begin - "{once}, {1} and a simple pattern variable" - (check-match '(a a a a a a a a) - [(xlist a1 ^ {once} a2 ^ {1} a3 a4 ^ *) - (list a4 a3 a2 a1)] - '((a a a a a) a (a) a)) - (void)) + "{once}, {1} and a simple pattern variable" + (check-match '(a a a a a a a a) + [(xlist a1 ^ {once} a2 ^ {1} a3 a4 ^ *) + (list a4 a3 a2 a1)] + '((a a a a a) a (a) a)) + (void))