File tree 2 files changed +35
-18
lines changed
2 files changed +35
-18
lines changed Original file line number Diff line number Diff line change @@ -690,24 +690,17 @@ See match-a-pattern.rkt for more details
690
690
(define table (make-hash))
691
691
(hash-set! mismatch-ht name table)
692
692
(set! priors table))
693
- (cond
694
- [(equal? nesting-depth 'unknown-mismatch-depth )
695
- (unless (null? exp)
696
- (error 'matcher.rkt
697
- (string-append "invariant broken; unknown-mismatch-depth should "
698
- " appear only when the expression is an empty list: ~s " )
699
- exp))]
700
- [else
701
- (let loop ([depth nesting-depth]
702
- [exp exp])
703
- (cond
704
- [(= depth 0 )
705
- (when (hash-ref priors exp #f )
706
- (fail #f ))
707
- (hash-set! priors exp #t )]
708
- [else
709
- (for ([exp-ele (in-list exp)])
710
- (loop (- depth 1 ) exp-ele))]))])]))
693
+ (unless (equal? nesting-depth 'unknown-mismatch-depth )
694
+ (let loop ([depth nesting-depth]
695
+ [exp exp])
696
+ (cond
697
+ [(= depth 0 )
698
+ (when (hash-ref priors exp #f )
699
+ (fail #f ))
700
+ (hash-set! priors exp #t )]
701
+ [else
702
+ (for ([exp-ele (in-list exp)])
703
+ (loop (- depth 1 ) exp-ele))])))]))
711
704
(make-bindings (hash-map match-ht make-bind)))))
712
705
713
706
;; compile-pattern : compiled-lang pattern boolean -> compiled-pattern
Original file line number Diff line number Diff line change 176
176
(make-bind '..._1 2 )))
177
177
'(1 1 1 1 2 2 )
178
178
none)))
179
+ (test-empty '(list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f ))
180
+ '(())
181
+ (list (make-mtch (make-bindings '() ) '(()) none)))
182
+ (test-empty '(list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f ))
183
+ '(() ())
184
+ (list (make-mtch (make-bindings '() ) '(() ()) none)))
185
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
186
+ '(() ())
187
+ (list (make-mtch (make-bindings '() ) '(() ()) none)))
188
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
189
+ '(() (()))
190
+ (list (make-mtch (make-bindings '() ) '(() (())) none)))
191
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
192
+ '(() ((())))
193
+ #f )
194
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
195
+ '(() ((1 )))
196
+ (list (make-mtch (make-bindings '() ) '(() ((1 ))) none)))
197
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
198
+ '(() (()))
199
+ (list (make-mtch (make-bindings '() ) '(() (())) none)))
200
+ (test-empty '(list (repeat (list (repeat (list (repeat (mismatch-name number_!_ number) #f #f )) #f #f )) #f #f ))
201
+ '(() (1 ))
202
+ #f )
179
203
180
204
(test-ellipses '(a) '(a))
181
205
(test-ellipses '((repeat a #f #f )) `(,(make-repeat 'a '() #f #f )))
You can’t perform that action at this time.
0 commit comments