Skip to content

Commit 0436a31

Browse files
author
dnolen
committed
we did not associate :tag with vars in the case of assignment.
changing this means we need to tweak numeric checks to accept 'clj-nil and 'js to new warnings
1 parent aa4f636 commit 0436a31

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

src/main/clojure/cljs/analyzer.cljc

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,7 +1330,7 @@
13301330
fn-var? (and (some? init-expr) (= (:op init-expr) :fn))
13311331
tag (if fn-var?
13321332
(or (:ret-tag init-expr) tag)
1333-
tag)
1333+
(or tag (:tag init-expr)))
13341334
export-as (when-let [export-val (-> sym meta :export)]
13351335
(if (= true export-val) var-name export-val))
13361336
doc (or (:doc args) (-> sym meta :doc))]
@@ -1377,9 +1377,10 @@
13771377
:max-fixed-arity (:max-fixed-arity init-expr)
13781378
:method-params params
13791379
:arglists (:arglists sym-meta)
1380-
:arglists-meta (doall (map meta (:arglists sym-meta)))}))) )
1381-
(when (and fn-var? (some? tag))
1382-
{:ret-tag tag})))
1380+
:arglists-meta (doall (map meta (:arglists sym-meta)))}))))
1381+
(if (and fn-var? (some? tag))
1382+
{:ret-tag tag}
1383+
(when tag {:tag tag}))))
13831384
(merge
13841385
{:env env
13851386
:op :def
@@ -2719,6 +2720,7 @@
27192720
;; warning without this - David
27202721
(cond
27212722
(nil? t) true
2723+
(= 'clj-nil t) true
27222724
(js-tag? t) true ;; TODO: revisit
27232725
:else
27242726
(if (and (symbol? t) (some? (get NUMERIC_SET t)))
@@ -2728,7 +2730,8 @@
27282730
(or (contains? t 'number)
27292731
(contains? t 'long)
27302732
(contains? t 'double)
2731-
(contains? t 'any))))))
2733+
(contains? t 'any)
2734+
(contains? t 'js))))))
27322735

27332736
(defn analyze-js-star* [env jsform args form]
27342737
(let [enve (assoc env :context :expr)

0 commit comments

Comments
 (0)