Skip to content

Commit e15af2f

Browse files
committed
use js-tag to determine tag in cljs.analyzer/analyze-dot
1 parent d1582f8 commit e15af2f

2 files changed

Lines changed: 5 additions & 8 deletions

File tree

src/main/clojure/cljs/analyzer.cljc

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2637,7 +2637,9 @@
26372637
:target targetexpr
26382638
:field field
26392639
:children children
2640-
:tag tag})
2640+
:tag (if (js-tag? tag)
2641+
(or (js-tag (-> tag meta :prefix) :tag) tag)
2642+
tag)})
26412643
::call (let [argexprs (map #(analyze enve %) args)
26422644
children (into [targetexpr] argexprs)]
26432645
{:op :dot
@@ -2648,11 +2650,7 @@
26482650
:args argexprs
26492651
:children children
26502652
:tag (if (js-tag? tag)
2651-
(let [pre (-> tag meta :prefix)
2652-
[sym _] (find (get-in @env/*compiler*
2653-
(into [::externs] (butlast pre)))
2654-
(last pre))]
2655-
(:ret-tag (meta sym) tag))
2653+
(or (js-tag (-> tag meta :prefix) :ret-tag) tag)
26562654
tag)}))))
26572655

26582656
(defmethod parse '.

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,6 @@
665665
(require '[cljs.compiler :as cc])
666666
(require '[cljs.closure :as closure])
667667

668-
;; TODO: need to handle the method/fn case
669668
(let [test-cenv (atom {::a/externs (externs/externs-map)})]
670669
(binding [a/*cljs-ns* a/*cljs-ns*
671670
a/*cljs-warnings* (assoc a/*cljs-warnings* :infer-warning true)]
@@ -715,7 +714,7 @@
715714
(map (comp :externs second)
716715
(get @test-cenv ::a/namespaces))))))
717716

718-
;; does NOT work, does not generate extern
717+
;; works, generates extern
719718
(let [test-cenv (atom {::a/externs (externs/externs-map
720719
(closure/load-externs
721720
{:externs ["src/test/externs/test.js"]}))})]

0 commit comments

Comments
 (0)