Skip to content

Commit affc7f3

Browse files
committed
Close ?:item or ??:item if (??:item thing nil) -- the nil means no more data
1 parent 93fb43e commit affc7f3

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/pattern/matchers/set.clj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,11 @@
5353
(list '?:= literal-set)
5454
(list '?:set-intersection literal-set))))
5555
patterns (when (seq patterns)
56-
(reduce (fn [m p] (list '?:set-item p m)) nil (reverse patterns)))]
56+
(reduce (fn [m p]
57+
(if m
58+
(list '?:set-item p m)
59+
(list '?:set-item p)))
60+
nil (reverse patterns)))]
5761
(compile-pattern*
5862
(if literals
5963
(if (seq patterns)
@@ -107,7 +111,7 @@
107111
maybe? ('#{?:maybe-set-item ?:maybe-item ??:maybe-item} t)
108112
t ('{?:maybe-item ?:item ??:maybe-item ??:item ?:maybe-set-item ?:set-item} t t)
109113
no-check-set? (or (#{'?:item '??:item} t) (= false (:check-set? comp-env)))
110-
closed? (:closed? comp-env)
114+
closed? (or (:closed? comp-env) (= [t item nil] pattern)) ;; close set if final arg is nil
111115
item-var (var-name item)
112116
remainder-matcher (when remainder (compile-pattern* remainder comp-env))
113117
remove-item (if no-check-set?

0 commit comments

Comments
 (0)