The dr-ignore-state and dr-ignore-states strategies do not call dr-leave-scope. Because of STR-168, any rule assignments within them are not garbage collected.

dr-ignore-state(s|name) =
where(
dr-new-rule-set
; dr-switch-rule-set(|name) => rs
)
; s
; where(<dr-set-rule-set(|name)> rs)

dr-ignore-states(s|names) =
where(
<map(dr-new-rule-set)> names
; zip(dr-switch-rule-set | names) => rss
)
; s
; where(<zip(dr-set-rule-set | names)> rss)

I propose to add dr-leave-scope calls to both strategies. Applying this does not fail any of the standard unit tests, and it seems unlikely that other applications depend on the old behavior of these (rarely used) strategies.

Submitted on 26 May 2009 at 12:30

Log in to post comments