2 files changed +11
-3
lines changed Original file line number Diff line number Diff line change 1079
1079
(js-tag pre tag-type externs externs))
1080
1080
([pre tag-type externs top]
1081
1081
(when-let [[p externs' :as me] (find externs (first pre))]
1082
- (let [tag (-> p meta tag-type)]
1082
+ (let [info (meta p)
1083
+ tag (get info tag-type)]
1083
1084
(if (= (count pre) 1 )
1084
- (when tag (symbol " js" (str (alias->type tag tag))))
1085
+ (when tag
1086
+ ; ; If we have a JS constructor don't return the type as
1087
+ ; ; js/Function as this isn't useful in type inference
1088
+ ; ; instead just return the constructor
1089
+ (if-let [ctor (:ctor info)]
1090
+ (symbol " js" (str ctor))
1091
+ (symbol " js" (str (alias->type tag tag)))))
1085
1092
(or (js-tag (next pre) tag-type externs' top)
1086
1093
(js-tag (into '[prototype] (next pre)) tag-type (get top tag) top)))))))
1087
1094
Original file line number Diff line number Diff line change 48
48
(is (= 'js/Console (ana/js-tag '[console] :tag externs)))
49
49
(is (= 'js/Function (ana/js-tag '[console log] :tag externs)))
50
50
(is (= 'js/Boolean (ana/js-tag '[Number isNaN] :ret-tag externs)))
51
- (is (= 'js/Foo (ana/js-tag '[baz] :ret-tag externs)))))
51
+ (is (= 'js/Foo (ana/js-tag '[baz] :ret-tag externs)))
52
+ (is (= 'js/Number (ana/js-tag '[Number] :tag externs)))))
52
53
53
54
(defn infer-test-helper
54
55
[{:keys [forms externs warnings warn js-dependency-index node-module-index with-core? opts]}]
0 commit comments