File tree Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Expand file tree Collapse file tree 2 files changed +24
-3
lines changed Original file line number Diff line number Diff line change 1879
1879
(disallowing-ns*
1880
1880
(analyze (assoc env :context :expr ) (:init args) sym))))
1881
1881
fn-var? (and (some? init-expr) (= (:op init-expr) :fn ))
1882
- tag (if fn-var?
1883
- (or (:ret-tag init-expr) tag (:inferred-ret-tag init-expr))
1884
- (or tag (:tag init-expr)))
1882
+ tag (cond
1883
+ fn-var? (or (:ret-tag init-expr) tag (:inferred-ret-tag init-expr))
1884
+ tag tag
1885
+ dynamic ANY_SYM
1886
+ :else (:tag init-expr))
1885
1887
export-as (when-let [export-val (-> sym meta :export )]
1886
1888
(if (= true export-val) var-name export-val))
1887
1889
doc (or (:doc args) (-> sym meta :doc ))]
Original file line number Diff line number Diff line change 35
35
(is (= 2 (with-redefs [a 10
36
36
b (inc a)]
37
37
b))))
38
+
39
+ (def ^:dynamic *foo* false )
40
+ (def ^:dynamic ^boolean *foo-tagged* false )
41
+
42
+ (defn bar [] (if *foo* 1 2 ))
43
+ (defn bar-tagged [] (if *foo-tagged* 1 2 ))
44
+
45
+ (deftest test-tag-inference
46
+ (is (= 2 (bar )))
47
+ (binding [*foo* " abc" ]
48
+ (is (= 1 (bar ))))
49
+ (binding [*foo* " " ]
50
+ (is (= 1 (bar ))))
51
+
52
+ (is (= 2 (bar-tagged )))
53
+ (binding [*foo-tagged* " abc" ]
54
+ (is (= 1 (bar-tagged ))))
55
+ (binding [*foo-tagged* " " ]
56
+ (is (= 2 (bar-tagged )))))
You can’t perform that action at this time.
0 commit comments