fix pattern matching with ellipses in certain positions preceeded by only literals and matched against zero occurrences (PR 8824)

svn: r6960
This commit is contained in:
Matthew Flatt 2007-07-25 16:41:44 +00:00
parent 5e0ed3552a
commit 4564282ed5
3 changed files with 2985 additions and 2977 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1010,7 +1010,9 @@
" ,(let((s(let((apph(app match-head '(stx-car e)))" " ,(let((s(let((apph(app match-head '(stx-car e)))"
"(appt(app match-tail '(stx-cdr e))))" "(appt(app match-tail '(stx-cdr e))))"
"(if mh-did-var?" "(if mh-did-var?"
"(if mt-did-var?"
"(app-append apph appt)" "(app-append apph appt)"
" `(let((mh ,apph))(and mh ,appt mh)))"
" `(if ,apph ,appt #f)))))" " `(if ,apph ,appt #f)))))"
"(if cap?" "(if cap?"
"(if id-is-rest?" "(if id-is-rest?"

View File

@ -1190,7 +1190,9 @@
,(let ([s (let ([apph (app match-head '(stx-car e))] ,(let ([s (let ([apph (app match-head '(stx-car e))]
[appt (app match-tail '(stx-cdr e))]) [appt (app match-tail '(stx-cdr e))])
(if mh-did-var? (if mh-did-var?
(app-append apph appt) (if mt-did-var?
(app-append apph appt)
`(let ([mh ,apph]) (and mh ,appt mh)))
`(if ,apph ,appt #f)))]) `(if ,apph ,appt #f)))])
(if cap? (if cap?
(if id-is-rest? (if id-is-rest?