From b802c7dfd0e19da3bab89e21ed9d1e66c8087791 Mon Sep 17 00:00:00 2001 From: Sam Tobin-Hochstadt Date: Mon, 4 Jan 2010 01:12:58 +0000 Subject: [PATCH] Fix PR 10140 svn: r17473 --- collects/scheme/match/parse-quasi.ss | 11 +++++------ collects/tests/match/examples.ss | 5 +++++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/collects/scheme/match/parse-quasi.ss b/collects/scheme/match/parse-quasi.ss index 65a85581f1..62bea52f73 100644 --- a/collects/scheme/match/parse-quasi.ss +++ b/collects/scheme/match/parse-quasi.ss @@ -42,11 +42,10 @@ (append-pats pat rpat) (raise-syntax-error 'match "non-list pattern inside unquote-splicing" stx #'p)))] - [(p dd) + [(p dd . rest) (ddk? #'dd) - (let* ([count (ddk? #'..)] - [min (if (number? count) count #f)] - [max (if (number? count) count #f)]) + (let* ([count (ddk? #'dd)] + [min (and (number? count) count)]) (make-GSeq (parameterize ([match-...-nesting (add1 (match-...-nesting))]) (list (list (pq #'p)))) @@ -55,7 +54,7 @@ (list #f) ;; patterns in p get bound to lists (list #f) - (make-Null (make-Dummy #f)) + (pq #'rest) #f))] [(a . b) (make-Pair (pq #'a) (pq #'b))] ;; the hard cases @@ -73,7 +72,7 @@ (make-Vector (map pq (syntax->list #'(p ...))))] [bx (box? (syntax-e #'bx)) - (make-Box (pq (unbox (syntax-e #'bx))))] + (make-Box (pq (unbox (syntax-e #'bx))))] [() (make-Null (make-Dummy #f))] [v diff --git a/collects/tests/match/examples.ss b/collects/tests/match/examples.ss index d386c39b93..f041a52fe8 100644 --- a/collects/tests/match/examples.ss +++ b/collects/tests/match/examples.ss @@ -603,4 +603,9 @@ (match 3 [(or) 1] [_ 4])) + + (comp '((1 2) 3) + (match `(begin 1 2 3) + [`(begin ,es ... ,en) + (list es en)])) ))