Skip to content

Commit 08335c6

Browse files
committed
* undefined is a ref cycle, special case
1 parent 8ab53af commit 08335c6

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/main/clojure/cljs/analyzer.cljc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1067,10 +1067,10 @@
10671067
(assoc :info nil)))))
10681068

10691069
(or
1070-
;; If the tag isn't Function, try to resolve it
1071-
;; similar to the super case above
1070+
;; If the tag isn't Function or undefined,
1071+
;; try to resolve it similar to the super case above
10721072
(let [tag (:tag info')]
1073-
(when (and tag (not= 'Function tag))
1073+
(when (and tag (not (contains? '#{Function undefined} tag)))
10741074
(resolve-extern (into [tag] (next pre)) externs top
10751075
(-> ret
10761076
(assoc :resolved [])

src/test/clojure/cljs/externs_infer_tests.clj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@
5353
(is (= '[Console]
5454
(-> (ana/resolve-extern '[console] externs) :resolved)))
5555
(is (= '[Console prototype log]
56-
(-> (ana/resolve-extern '[console log] externs) :resolved)))))
56+
(-> (ana/resolve-extern '[console log] externs) :resolved)))
57+
(is (= '[undefined]
58+
(-> (ana/resolve-extern '[undefined] externs) :resolved)))))
5759

5860
(comment
5961
(clojure.test/test-vars [#'test-resolve-extern])
@@ -62,6 +64,7 @@
6264
;; succeeds
6365
(ana/resolve-extern '[console] externs)
6466
(ana/resolve-extern '[console log] externs)
67+
(ana/resolve-extern '[undefined] externs)
6568

6669
)
6770

0 commit comments

Comments
 (0)