Skip to content

Commit b80c8cc

Browse files
author
dnolen
committed
starting to enumerate externs inference test cases
1 parent 38e19b3 commit b80c8cc

2 files changed

Lines changed: 42 additions & 7 deletions

File tree

src/main/clojure/cljs/externs.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
(if-let [^JSTypeExpression ty (.getType info)]
4040
{:tag (get-type* ty)}
4141
(if (or (.isConstructor info) (.isInterface info))
42-
{:tag (symbol (.. node getFirstChild getQualifiedName))}
42+
{:tag 'Function}
4343
(if (.hasReturnType info)
4444
{:tag 'Function
4545
:ret-tag (get-type* (.getReturnType info))})))))))

src/test/clojure/cljs/analyzer_tests.clj

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -650,7 +650,15 @@
650650
'baz)
651651
first meta)
652652

653-
;; User supplied externs
653+
(->
654+
(find (externs/externs-map
655+
(closure/load-externs
656+
{:externs ["src/test/externs/test.js"]
657+
:use-only-custom-externs true}))
658+
'Foo)
659+
first meta)
660+
661+
;; works, does not generate extern
654662
(let [test-cenv (atom {::a/externs (externs/externs-map
655663
(closure/load-externs
656664
{:externs ["src/test/externs/test.js"]}))})]
@@ -659,16 +667,29 @@
659667
(e/with-compiler-env test-cenv
660668
(a/analyze-form-seq
661669
'[(ns foo.core)
662-
(defn baz [^js/Foo a]
663-
(.wozMethod a))
664-
(js/console.log (.wozMethod (js/Foo.)))
665670
(js/console.log (.wozMethod (js/baz)))]))
666671
(cc/emit-externs
667672
(reduce util/map-merge {}
668673
(map (comp :externs second)
669674
(get @test-cenv ::a/namespaces))))))
670675

671-
;; the following should produce externs, but does not
676+
;; works, does not generate extern
677+
(let [test-cenv (atom {::a/externs (externs/externs-map
678+
(closure/load-externs
679+
{:externs ["src/test/externs/test.js"]}))})]
680+
(binding [a/*cljs-ns* a/*cljs-ns*
681+
a/*cljs-warnings* (assoc a/*cljs-warnings* :infer-warning true)]
682+
(e/with-compiler-env test-cenv
683+
(a/analyze-form-seq
684+
'[(ns foo.core)
685+
(defn baz [^js/Foo x]
686+
(.wozMethod x))]))
687+
(cc/emit-externs
688+
(reduce util/map-merge {}
689+
(map (comp :externs second)
690+
(get @test-cenv ::a/namespaces))))))
691+
692+
;; does NOT work, does not generate extern
672693
(let [test-cenv (atom {::a/externs (externs/externs-map
673694
(closure/load-externs
674695
{:externs ["src/test/externs/test.js"]}))})]
@@ -678,7 +699,21 @@
678699
(a/analyze-form-seq
679700
'[(ns foo.core)
680701
(defn baz [^js/Foo a]
681-
(.gozMethod a))
702+
(.gozMethod a))]))
703+
(cc/emit-externs
704+
(reduce util/map-merge {}
705+
(map (comp :externs second)
706+
(get @test-cenv ::a/namespaces))))))
707+
708+
;; does NOT work, does not generate extern
709+
(let [test-cenv (atom {::a/externs (externs/externs-map
710+
(closure/load-externs
711+
{:externs ["src/test/externs/test.js"]}))})]
712+
(binding [a/*cljs-ns* a/*cljs-ns*
713+
a/*cljs-warnings* (assoc a/*cljs-warnings* :infer-warning true)]
714+
(e/with-compiler-env test-cenv
715+
(a/analyze-form-seq
716+
'[(ns foo.core)
682717
(js/console.log (.gozMethod (js/baz)))]))
683718
(cc/emit-externs
684719
(reduce util/map-merge {}

0 commit comments

Comments
 (0)