Skip to content
This repository was archived by the owner on Jan 2, 2023. It is now read-only.

Commit f839195

Browse files
committed
js type hint
1 parent 36e7aca commit f839195

File tree

3 files changed

+25
-32
lines changed

3 files changed

+25
-32
lines changed

squint/corpus/destructuring.cljs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
(ns destructuring)
22

3-
(let [{:js/keys [a] :as m} (clj->js {:a 1})
4-
[b c d] [2 3 4]]
5-
(prn m a b c d))
6-
7-
(let [{:js/keys [a] :as m} {:js/a 1}]
8-
(prn m a))
3+
(let [^js {:keys [a] :as m} (clj->js {:a 1})
4+
^js {:js/keys [b]} (js-obj "js/b" :js/b)
5+
[c d e] [2 3 4]]
6+
(prn m a b c d e))

squint/corpus/destructuring.mjs

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,19 @@
1-
import { prn, nth, vector, __destructure_map, keyword, clj__GT_js, arrayMap } from 'cherry-cljs/cljs.core.js'
1+
import { js_obj, prn, nth, vector, __destructure_map, keyword, clj__GT_js, arrayMap } from 'cherry-cljs/cljs.core.js'
22

33
(function () {
4-
let map__1124, m, a, vec__1125, b, c, d;
5-
map__1124 = clj__GT_js(arrayMap(keyword("a"), 1));
6-
map__1124 = __destructure_map(map__1124);
7-
m = map__1124;
8-
a = map__1124["a"];
9-
vec__1125 = vector(2, 3, 4);
10-
b = nth(vec__1125, 0, null);
11-
c = nth(vec__1125, 1, null);
12-
d = nth(vec__1125, 2, null);
13-
return (function () {
14-
return prn(m, a, b, c, d);
15-
})();
16-
})();
17-
(function () {
18-
let map__1129, m, a;
19-
map__1129 = arrayMap(keyword("js/a"), 1);
4+
let map__1128, m, a, map__1129, b, vec__1130, c, d, e;
5+
map__1128 = clj__GT_js(arrayMap(keyword("a"), 1));
6+
map__1128 = __destructure_map(map__1128);
7+
m = map__1128;
8+
a = map__1128["a"];
9+
map__1129 = js_obj("js/b", keyword("js/b"));
2010
map__1129 = __destructure_map(map__1129);
21-
m = map__1129;
22-
a = map__1129["a"];
11+
b = map__1129["js/b"];
12+
vec__1130 = vector(2, 3, 4);
13+
c = nth(vec__1130, 0, null);
14+
d = nth(vec__1130, 1, null);
15+
e = nth(vec__1130, 2, null);
2316
return (function () {
24-
return prn(m, a);
17+
return prn(m, a, b, c, d, e);
2518
})();
2619
})();

squint/src/cherry/internal/destructure.cljc

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@
4343
ret))))
4444
pmap
4545
(fn [bvec b v]
46-
(let [gmap (gensym "map__")
46+
(let [m (meta b)
47+
js-keys? (= 'js (:tag m))
48+
gmap (gensym "map__")
4749
defaults (:or b)]
4850
(loop [ret (-> bvec (conj gmap) (conj v)
4951
(conj gmap) (conj (list 'cljs.core/--destructure-map gmap))
@@ -58,7 +60,7 @@
5860
(let [mkns (namespace mk)
5961
mkn (name mk)]
6062
(cond
61-
(= mk "js/keys") (assoc transforms mk str)
63+
js-keys? (assoc transforms mk #(subs (str (keyword (or mkns (namespace %)) (name %))) 1))
6264
(= mkn "keys") (assoc transforms mk #(keyword (or mkns (namespace %)) (name %)))
6365
(= mkn "syms") (assoc transforms mk #(list `quote (symbol (or mkns (namespace %)) (name %))))
6466
(= mkn "strs") (assoc transforms mk str)
@@ -81,11 +83,11 @@
8183
(with-meta (symbol nil (name bb)) (meta bb))
8284
bb)
8385
bv (if (contains? defaults local)
84-
(if (= "js" (namespace bk))
85-
(list 'cljs.core/aget gmap (name bk) (defaults local))
86+
(if js-keys?
87+
(list 'cljs.core/aget gmap bk (defaults local))
8688
(list 'cljs.core/get gmap bk (defaults local)))
87-
(if (= "js" (namespace bk))
88-
(list 'cljs.core/aget gmap (name bk))
89+
(if js-keys?
90+
(list 'cljs.core/aget gmap bk)
8991
(list 'cljs.core/get gmap bk)))]
9092
(recur
9193
(if (or (keyword? bb) (symbol? bb)) ;(ident? bb)

0 commit comments

Comments
 (0)