File tree 2 files changed +21
-19
lines changed
2 files changed +21
-19
lines changed Original file line number Diff line number Diff line change 1033
1033
" Given a foreign js property list, return a resolved js property list and the
1034
1034
extern var info"
1035
1035
([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 }))
1044
1037
([pre externs top ret]
1045
1038
(cond
1046
1039
(empty? pre) ret
1054
1047
info' (meta x')]
1055
1048
(if (and (= 'Function (:tag info')) (:ctor info'))
1056
1049
(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
+
1057
1056
; ; first look for a property on the prototype
1058
1057
(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
1064
1058
(-> ret
1065
1059
(update :resolved conj x)
1066
- (assoc :info info')))
1060
+ (assoc :info nil )))
1061
+
1067
1062
; ; finally check the super class if there is one
1068
1063
(when-let [super (:super info')]
1069
1064
(resolve-extern (into [super] (next pre)) externs top
Original file line number Diff line number Diff line change 44
44
(is (true ? (ana/has-extern? '[baz] externs)))
45
45
(is (false ? (ana/has-extern? '[Baz] externs)))))
46
46
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
+
47
54
(comment
48
55
49
- (clojure.test/test-vars [#'test-resolve-extern] )
56
+ (def externs ( externs/externs-map ) )
50
57
51
- ; ; working
52
- (externs/info externs '[baz])
53
- (externs/info externs '[Foo gozMethod])
58
+ ; ; succeeds
59
+ (ana/resolve-extern '[console] externs)
54
60
55
- (ana/has-extern? '[Foo] externs)
61
+ ; ; this one fails
62
+ (ana/resolve-extern '[console log] externs)
56
63
57
64
)
58
65
You can’t perform that action at this time.
0 commit comments