Incorrect transients behavior (dissoc! deletes too much)

Description

The snippet below reproduces the problem

1 2 3 4 5 6 7 8 9 10 (defn bug [seq] (let [m (transient (zipmap seq (repeat 1)))] (loop [m m [x & rest] seq] (when x (if (contains? m x) (recur (dissoc! m x) rest) (throw (js/Error. "What's going on?"))))))) (bug [44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24]]

Environment

None

Status

Assignee

Michał Marczyk

Reporter

import

Labels

Approval

None

Patch

None

Priority

Major
Configure