Further checks
This commit is contained in:
parent
3bbad3df6d
commit
2a88896e09
|
@ -32,10 +32,13 @@
|
|||
(hash-set entries (- npats 1) (Pattern-discard))
|
||||
entries))
|
||||
|
||||
(define (entries->items entries on-missing)
|
||||
(define max-key (apply max -1 (hash-keys entries)))
|
||||
(for/list [(i (in-range 0 (+ max-key 1)))]
|
||||
(hash-ref entries i on-missing)))
|
||||
(define (entries->items entries)
|
||||
(let/ec return
|
||||
(define keys (hash-keys entries))
|
||||
(for [(k (in-list keys))] (unless (exact-nonnegative-integer? k) (return (void))))
|
||||
(define max-key (apply max -1 keys))
|
||||
(for/list [(i (in-range 0 (+ max-key 1)))]
|
||||
(hash-ref entries i (lambda () (return void))))))
|
||||
|
||||
(define (rec label pats) (Pattern-group (GroupType-rec label) (items->entries pats)))
|
||||
(define (arr pats) (Pattern-group (GroupType-arr) (items->entries pats)))
|
||||
|
@ -57,7 +60,10 @@
|
|||
|
||||
(define (literal-pattern->literal p)
|
||||
(let/ec return
|
||||
(define (e->i e) (entries->items e (lambda () (return (void)))))
|
||||
(define (e->i e)
|
||||
(match (entries->items e)
|
||||
[(? void?) (return (void))]
|
||||
[items items]))
|
||||
(let walk ((p p))
|
||||
(match p
|
||||
[(Pattern-discard) (return (void))]
|
||||
|
|
Loading…
Reference in New Issue