File tree Expand file tree Collapse file tree 1 file changed +5
-1
lines changed Expand file tree Collapse file tree 1 file changed +5
-1
lines changed Original file line number Diff line number Diff line change 1603
1603
(analyze (assoc env :context :expr ) (:init args) sym))))
1604
1604
fn-var? (and (some? init-expr) (= (:op init-expr) :fn ))
1605
1605
tag (if fn-var?
1606
- (or (:ret-tag init-expr) tag)
1606
+ (or (:ret-tag init-expr) tag ( :inferred-ret-tag init-expr) )
1607
1607
(or tag (:tag init-expr)))
1608
1608
export-as (when-let [export-val (-> sym meta :export )]
1609
1609
(if (= true export-val) var-name export-val))
1844
1844
children (if (some? name-var)
1845
1845
[:local :methods ]
1846
1846
[:methods ])
1847
+ inferred-ret-tag (let [inferred-tags (map (partial infer-tag env) (map :body methods))]
1848
+ (when (apply = inferred-tags)
1849
+ (first inferred-tags)))
1847
1850
ast (merge {:op :fn
1848
1851
:env env
1849
1852
:form form
1850
1853
:name name-var
1851
1854
:methods methods
1852
1855
:variadic? variadic
1853
1856
:tag 'function
1857
+ :inferred-ret-tag inferred-ret-tag
1854
1858
:recur-frames *recur-frames*
1855
1859
:loop-lets *loop-lets*
1856
1860
:jsdoc [js-doc]
You can’t perform that action at this time.
0 commit comments