Skip to content

Commit ca7b365

Browse files
committed
- next problem, resolving console.log w/o the old bits
1 parent 82c3e07 commit ca7b365

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

Diff for: src/main/clojure/cljs/analyzer.cljc

+9-14
Original file line numberDiff line numberDiff line change
@@ -1033,14 +1033,7 @@
10331033
"Given a foreign js property list, return a resolved js property list and the
10341034
extern var info"
10351035
([pre externs]
1036-
(let [pre (if-some [me (find
1037-
(get-in externs '[Window prototype])
1038-
(first pre))]
1039-
(if-some [tag (-> me first meta :tag)]
1040-
(into [tag 'prototype] (next pre))
1041-
pre)
1042-
pre)]
1043-
(resolve-extern pre externs externs {:resolved [] :info nil})))
1036+
(resolve-extern pre externs externs {:resolved [] :info nil}))
10441037
([pre externs top ret]
10451038
(cond
10461039
(empty? pre) ret
@@ -1054,16 +1047,18 @@
10541047
info' (meta x')]
10551048
(if (and (= 'Function (:tag info')) (:ctor info'))
10561049
(or
1050+
;; then check for "static" property
1051+
(resolve-extern (next pre) externs' top
1052+
(-> ret
1053+
(update :resolved conj x)
1054+
(assoc :info info')))
1055+
10571056
;; first look for a property on the prototype
10581057
(resolve-extern (into '[prototype] (next pre)) externs' top
1059-
(-> ret
1060-
(update :resolved conj 'prototype)
1061-
(assoc :info nil)))
1062-
;; then check for "static" property
1063-
(resolve-extern (next pre) externs' top
10641058
(-> ret
10651059
(update :resolved conj x)
1066-
(assoc :info info')))
1060+
(assoc :info nil)))
1061+
10671062
;; finally check the super class if there is one
10681063
(when-let [super (:super info')]
10691064
(resolve-extern (into [super] (next pre)) externs top

Diff for: src/test/clojure/cljs/externs_infer_tests.clj

+12-5
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,22 @@
4444
(is (true? (ana/has-extern? '[baz] externs)))
4545
(is (false? (ana/has-extern? '[Baz] externs)))))
4646

47+
(deftest test-resolve-extern
48+
(let [externs (externs/externs-map)]
49+
(is (= '[Number]
50+
(-> (ana/resolve-extern '[Number] externs) :resolved)))
51+
(is (= '[Number prototype valueOf]
52+
(-> (ana/resolve-extern '[Number valueOf] externs) :resolved)))))
53+
4754
(comment
4855

49-
(clojure.test/test-vars [#'test-resolve-extern])
56+
(def externs (externs/externs-map))
5057

51-
;; working
52-
(externs/info externs '[baz])
53-
(externs/info externs '[Foo gozMethod])
58+
;; succeeds
59+
(ana/resolve-extern '[console] externs)
5460

55-
(ana/has-extern? '[Foo] externs)
61+
;; this one fails
62+
(ana/resolve-extern '[console log] externs)
5663

5764
)
5865

0 commit comments

Comments
 (0)