Skip to content

Commit 979715c

Browse files
committed
* goog.object/containsKey type inference doesn't work for reason, leave a trail for later
1 parent 2619b1d commit 979715c

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

src/main/cljs/cljs/core.cljs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12178,6 +12178,8 @@ reduces them without incurring seq initialization"
1217812178
Object
1217912179
(findInternedVar [this sym]
1218012180
(let [k (munge (str_ sym))]
12181+
;; FIXME: this shouldn't need ^boolean due to GCL library analysis,
12182+
;; but not currently working
1218112183
(when ^boolean (gobject/containsKey obj k)
1218212184
(let [var-sym (symbol (str_ name) (str_ sym))
1218312185
var-meta {:ns this}]

src/test/clojure/cljs/externs_parsing_tests.clj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
(is (= 'any (get-in ns [:defs 'get :ret-tag])))
3838
(is (= 'array (get-in ns [:defs 'getKeys :ret-tag])))))
3939

40+
(comment
41+
;; works
42+
(get-in (externs/analyze-goog-file "goog/object/object.js")
43+
[:defs 'containsKey :ret-tag])
44+
)
45+
4046
(deftest test-parse-super
4147
(let [info (->
4248
(filter

src/test/clojure/cljs/type_inference_tests.clj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,3 +394,15 @@
394394
(:import [goog.history Html5History]))
395395
(Html5History.)]
396396
{} true))))))
397+
398+
;; FIXME: infers any instead of boolean, nothing wrong w/ the externs parsing
399+
;; but this definitely does not work at the moment
400+
#_(deftest test-goog-infer
401+
(is (= 'boolean
402+
(:tag
403+
(env/with-compiler-env (env/default-compiler-env)
404+
(ana/analyze-form-seq
405+
'[(ns test.foo
406+
(:require [goog.object :as gobject]))
407+
(gobject/containsKey (js-object) "foo")]
408+
{} true))))))

0 commit comments

Comments
 (0)