File tree Expand file tree Collapse file tree 4 files changed +26
-10
lines changed Expand file tree Collapse file tree 4 files changed +26
-10
lines changed Original file line number Diff line number Diff line change 695
695
:sym (analyze expr-env `(quote ~(symbol (name (:ns var)) (name (:name var)))))
696
696
:meta (let [ks [:ns :doc :file :line :column ]
697
697
m (merge
698
- (assoc (zipmap ks (map #(list 'quote (get var %)) ks))
699
- :name `(quote ~(symbol (name (:name var))))
700
- :test `(when ~sym (.-cljs$lang$test ~sym))
701
- :arglists (map with-meta (:arglists var) (:arglists-meta var)))
702
698
(let [user-meta (:meta var)
703
699
uks (keys user-meta)]
704
700
(zipmap uks
705
- (map #(list 'quote (get user-meta %)) uks))))]
701
+ (map #(list 'quote (get user-meta %)) uks)))
702
+ (assoc (zipmap ks (map #(list 'quote (get var %)) ks))
703
+ :name `(quote ~(symbol (name (:name var))))
704
+ :test `(when ~sym (.-cljs$lang$test ~sym))
705
+ :arglists (let [arglists (:arglists var)
706
+ arglists' (if (= 'quote (first arglists))
707
+ (second arglists)
708
+ arglists)]
709
+ (list 'quote
710
+ (doall (map with-meta arglists'
711
+ (:arglists-meta var)))))))]
706
712
(analyze expr-env m))}))
707
713
708
714
(defmethod parse 'if
Original file line number Diff line number Diff line change 2107
2107
{:variadic true
2108
2108
:max-fixed-arity c-1
2109
2109
:method-params [sig]
2110
- :arglists [ arglist]
2110
+ :arglists ( core/list arglist)
2111
2111
:arglists-meta (doall (map meta [arglist]))})]
2112
2112
`(do
2113
2113
(def ~(with-meta name meta)
Original file line number Diff line number Diff line change 17
17
(cond
18
18
(:forms m) (doseq [f (:forms m)]
19
19
(println " " f))
20
- (:arglists m) (if (or (:macro m)
21
- (:repl-special-function m))
22
- (prn (:arglists m))
23
- (prn (second (:arglists m)))))
20
+ (:arglists m) (let [arglists (:arglists m)]
21
+ (if (or (:macro m)
22
+ (:repl-special-function m))
23
+ (prn arglists)
24
+ (prn
25
+ (if (= 'quote (first arglists))
26
+ (second arglists)
27
+ arglists)))))
24
28
(if (:special-form m)
25
29
(do
26
30
(println " Special Form" )
Original file line number Diff line number Diff line change 2783
2783
(is (= (set {:a 0 :b 0 :c 0 :d 0 :e 0 :f 0 :g 0 :h 0 :i 0 })
2784
2784
#{[:a 0 ] [:b 0 ] [:c 0 ] [:d 0 ] [:e 0 ] [:f 0 ] [:g 0 ] [:h 0 ] [:i 0 ]})))
2785
2785
2786
+ (deftest test-var-aarglists
2787
+ (is (= (-> #'first meta :arglists ) '([coll])))
2788
+ (is (= (-> #'hash-map meta :arglists ) '([& keyvals])))
2789
+ (is (= (-> #'map meta :arglists )
2790
+ '([f] [f coll] [f c1 c2] [f c1 c2 c3] [f c1 c2 c3 & colls]))))
2791
+
2786
2792
(comment
2787
2793
; ; ObjMap
2788
2794
; ; (let [ks (map (partial str "foo") (range 500))
You can’t perform that action at this time.
0 commit comments