Fixes matching of ..._x and ..._!_x inside ellipses
This commit is contained in:
parent
d265231452
commit
d97a2b505c
|
@ -1466,7 +1466,14 @@ before the pattern compiler is invoked.
|
|||
[else (let ([r-exp (car r-exps)])
|
||||
(cond
|
||||
[(repeat? r-exp)
|
||||
(append (repeat-empty-bindings r-exp)
|
||||
(append (if (repeat-suffix r-exp)
|
||||
(list ((if (repeat-mismatch? r-exp)
|
||||
make-mismatch-bind
|
||||
make-bind)
|
||||
(repeat-suffix r-exp)
|
||||
'()))
|
||||
null)
|
||||
(repeat-empty-bindings r-exp)
|
||||
(i-loop (cdr r-exps) ribs))]
|
||||
[else
|
||||
(loop (car r-exps) (i-loop (cdr r-exps) ribs))]))])))]
|
||||
|
|
|
@ -203,6 +203,16 @@
|
|||
(test-empty '(a ..._1 a ..._1)
|
||||
'(a a)
|
||||
(list (make-test-mtch (make-bindings (list (make-bind '..._1 1))) '(a a) none)))
|
||||
|
||||
(test-empty '((a ..._1 a ..._1) ...)
|
||||
'((a a a a))
|
||||
(list (make-test-mtch (make-bindings (list (make-bind '..._1 '(2)))) '((a a a a)) none)))
|
||||
(test-empty '((a ..._!_1 a ..._!_1) ...)
|
||||
'((a a a a))
|
||||
(list (make-test-mtch (make-bindings '()) '((a a a a)) none)
|
||||
(make-test-mtch (make-bindings '()) '((a a a a)) none)
|
||||
(make-test-mtch (make-bindings '()) '((a a a a)) none)
|
||||
(make-test-mtch (make-bindings '()) '((a a a a)) none)))
|
||||
|
||||
(test-empty '((name x a) ..._!_1 (name y a) ..._!_1)
|
||||
'(a a)
|
||||
|
|
Loading…
Reference in New Issue
Block a user