Skip to content

Commit

Permalink
Fixing meta bug on coll
Browse files Browse the repository at this point in the history
  • Loading branch information
dupuchba committed Sep 17, 2022
1 parent 5edb9a5 commit 9996903
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
8 changes: 7 additions & 1 deletion clj/src/cljd/compiler.cljc
Original file line number Diff line number Diff line change
Expand Up @@ -1483,7 +1483,12 @@
(defn emit-coll
([coll env] (emit-coll emit coll env))
([maybe-quoted-emit coll env]
(if (seq coll)
(cond
(seq (meta coll))
(with-lifted [data (maybe-quoted-emit (with-meta coll nil) env)] env
(with-lifted [metadata (maybe-quoted-emit (meta coll) env)] env
(list (emit 'cljd.core/with-meta env) data metadata)))
(seq coll)
(let [items (into [] (if (map? coll) cat identity) coll)
fn-sym (cond
(map? coll) 'cljd.core/-map-lit
Expand All @@ -1493,6 +1498,7 @@
:else (throw (ex-info (str "Can't emit collection " (pr-str coll)) {:form coll}))) ]
(with-lifted [fixed-list (emit-dart-literal maybe-quoted-emit (with-meta (vec items) {:fixed true}) env)] env
(list (emit fn-sym env) fixed-list)))
:empty-coll
(emit
(cond
(map? coll) 'cljd.core/-EMPTY-MAP
Expand Down
11 changes: 11 additions & 0 deletions clj/test/cljd/test_clojure/core_test_cljd.cljd
Original file line number Diff line number Diff line change
Expand Up @@ -546,3 +546,14 @@
[:error]))))

;; (.fold (stream xform coll) [] (fn [acc item] (conj acc item)))

(deftest meta-on-colls-not-generated-CLJD151
(is (= (meta '^{x (inc 1)} [1]) '{x (inc 1)}))
(is (= ((fn [] (meta '^{x (inc 1)} [1]))) '{x (inc 1)}))
(is (= (meta ^{:a (inc 1)} [1]) {:a 2}))
(is (= ((fn [] (meta ^{:a (inc 1)} [1]))) {:a 2}))

(is (= (meta '^{x (inc 1)} []) '{x (inc 1)}))
(is (= ((fn [] (meta '^{x (inc 1)} []))) '{x (inc 1)}))
(is (= (meta ^{:a (inc 1)} []) {:a 2}))
(is (= ((fn [] (meta ^{:a (inc 1)} []))) {:a 2})))

0 comments on commit 9996903

Please sign in to comment.