Details
-
Type:
Defect
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Environment:[org.clojure/clojurescript "0.0-1552"]
Description
When running this loop, then the map's meta is lost after 32 assocs:
(loop [i 0, m (with-meta {} {:foo :bar})]
(when (<= i 34)
(.log js/console i (pr-str (meta m)))
(recur (inc i) (assoc m (str i) i))))
The last 4 lines of output read
31 {:foo :bar}
32 {:foo :bar}
33 nil
34 nil
cljs.core.ObjMap/HASHMAP_THRESHOLD happens to be 32, so I guess
there is a connection.
Attachments
Activity
Michał Marczyk
made changes -
| Field | Original Value | New Value |
|---|---|---|
| Assignee | Michał Marczyk [ michalmarczyk ] |
Michał Marczyk
made changes -
| Attachment | 0001-CLJS-461-preserve-metadata-on-automatic-ObjMap-to-PH.patch [ 11815 ] |
Michał Marczyk
made changes -
| Attachment | 0001-CLJS-461-preserve-metadata-on-automatic-map-conversi.patch [ 11816 ] |
Michał Marczyk
made changes -
| Attachment |
0001- |
David Nolen
made changes -
| Description |
When running this loop, then the map's meta is lost after 32 assocs:
(loop [i 0, m (with-meta {} {:foo :bar})] (when (<= i 34) (.log js/console i (pr-str (meta m))) (recur (inc i) (assoc m (str i) i)))) The last 4 lines of output read 31 {:foo :bar} 32 {:foo :bar} 33 nil 34 nil cljs.core.ObjMap/HASHMAP_THRESHOLD happens to be 32, so I guess there is a connection. |
When running this loop, then the map's meta is lost after 32 assocs:
{code} (loop [i 0, m (with-meta {} {:foo :bar})] (when (<= i 34) (.log js/console i (pr-str (meta m))) (recur (inc i) (assoc m (str i) i)))) {code} The last 4 lines of output read {code} 31 {:foo :bar} 32 {:foo :bar} 33 nil 34 nil {code} cljs.core.ObjMap/HASHMAP_THRESHOLD happens to be 32, so I guess there is a connection. |
Michał Marczyk
made changes -
| Attachment | 0005-CLJS-461-preserve-metadata-on-automatic-map-conversi.patch [ 11819 ] |
Michał Marczyk
made changes -
| Attachment |
0005- |
Michał Marczyk
made changes -
| Attachment |
0001- |
Michał Marczyk
made changes -
| Attachment | 0001-CLJS-461-preserve-metadata-on-automatic-map-conversi.patch [ 11820 ] |
Michał Marczyk
made changes -
| Attachment |
0001- |
Michał Marczyk
made changes -
| Attachment | 0001-CLJS-461-preserve-metadata-on-automatic-map-conversi.patch [ 11821 ] |
David Nolen
made changes -
| Resolution | Completed [ 1 ] | |
| Status | Open [ 1 ] | Resolved [ 5 ] |
obj-map->hash-map failed to take into account the fact that transients don't support metadata. The attached patch fixes this.