                                   "\" should be a vector"))))))
                fdecl)
              bad-args (seq (remove #(vector? %) argdecls))]
-    (when bad-args
+    (core/when bad-args
       (throw
         #?(:clj (IllegalArgumentException.
                   (core/str "Parameter declaration \"" (first bad-args)

  )

(def
  ^{:doc "Same as (def name (fn [params* ] exprs*)) or (def
    name (fn ([params* ] exprs*)+)) with any doc-string or attrs added
    to the var metadata. prepost-map defines a map with optional keys
    :pre and :post that contain collections of pre or post conditions."
    :arglists '([name doc-string? attr-map? [params*] prepost-map? body]
                 [name doc-string? attr-map? ([params*] prepost-map? body)+ attr-map?])}
  defn (fn defn [&form &env name & fdecl]
         ;; Note: Cannot delegate this check to def because of the call to (with-meta name ..)
         (if (core/instance? clojure.lang.Symbol name)
           nil

      #?(:clj (clojure.core/IllegalArgumentException.
                (core/str "Duplicate case test constant '"
                  test "'"
                  (core/when (:line env)
                    (core/str " on line " (:line env) " "
                      cljs.analyzer/*cljs-file*))))
         :cljs (js/Error.
                 (core/str "Duplicate case test constant '"
                   test "'"
                   (core/when (:line env)
                     (core/str " on line " (:line env) " "
                       cljs.analyzer/*cljs-file*))))))
    (assoc m test expr)))
