Skip to content

Commit ba268a1

Browse files
committed
ObjMap, return original map if new kv is identical
1 parent a761d54 commit ba268a1

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/main/cljs/cljs/core.cljs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12603,15 +12603,19 @@ reduces them without incurring seq initialization"
1260312603
(let [k (if-not (keyword? k) k (keyword->obj-map-key k))]
1260412604
(if (string? k)
1260512605
(if-not (nil? (scan-array 1 k strkeys))
12606-
(let [new-strobj (obj-clone strobj strkeys)]
12607-
(gobject/set new-strobj k v)
12608-
(ObjMap. meta strkeys new-strobj nil)) ;overwrite
12609-
(let [new-strobj (obj-clone strobj strkeys) ; append
12606+
(if (identical? v (gobject/get strobj k))
12607+
coll
12608+
;; overwrite
12609+
(let [new-strobj (obj-clone strobj strkeys)]
12610+
(gobject/set new-strobj k v)
12611+
(ObjMap. meta strkeys new-strobj nil)))
12612+
;; append
12613+
(let [new-strobj (obj-clone strobj strkeys)
1261012614
new-keys (aclone strkeys)]
1261112615
(gobject/set new-strobj k v)
1261212616
(.push new-keys k)
1261312617
(ObjMap. meta new-keys new-strobj nil)))
12614-
; non-string key. game over.
12618+
;; non-string key. game over.
1261512619
(-with-meta
1261612620
(-kv-reduce coll
1261712621
(fn [ret k v]

0 commit comments

Comments
 (0)