                       :info {:shadow (or (locals name)
                                        (get-in env [:js-globals name]))}}
                      (when-let [tag (-> name meta :tag)]
-                       {:tag tag}))) 
+                       {:ret-tag tag}))) 
         locals (if (and locals name) (assoc locals name name-var) locals)
         type (-> form meta ::type)
         fields (-> form meta ::fields)

    tag
    (case (:op e)
      :recur 'ignore
      :let (infer-tag env (:expr e))
      :loop (infer-tag env (:expr e))
      :do  (infer-tag env (:ret e))
      :method (infer-tag env (:expr e))
      :def (infer-tag env (:init e))
      :invoke  (let [f (:f e)]
                 (or (and (-> f :info :fn-var) (:tag f))
                     (infer-tag env
                       (assoc (find-matching-method f (:args e)) :op :method))
                     'any))

      (when (and (:overload-arity *cljs-warnings*) (not= (distinct param-counts) param-counts))
        (warning :overload-arity env {:name name-var})))
    {:env env :op :fn :form form :name name-var :methods methods :variadic variadic
     :tag 'function
     :recur-frames *recur-frames* :loop-lets *loop-lets*
     :jsdoc [(when variadic "@param {...*} var_args")]
     :max-fixed-arity max-fixed-arity
