                                 nil))
             actual-computed `(~'om/get-computed ~actual-props)]
         `(~name ~args
-          (~'let [{:keys [~@props]} ~actual-props
-                  {:keys [~@computed]} ~actual-computed]
+          (~'let [{:keys [~@prop-names]} ~actual-props
+                  {:keys [~@computed-names]} ~actual-computed]
            ~@body)))
       f)))
 

  ([pred pad coll] (sequence (pad-by pred pad) coll)))

(defn parse-props-spec
  "Parse a prop spec such as [user [name email]] into symbols
   that can be used for destructuring properties, e.g.
   [user/name user/email]."
  [spec]
  (letfn [(parse-step [{:keys [props prev] :as ret} prop]
            {:pre [(vector? props)
                   (or (symbol? prop) (vector? prop))
                   (or (nil? prev) (symbol? prev) (vector? prev))]}
            (if (vector? prop)
              (do
                (assert (symbol? prev)
                        (str "The vector " prop " may only appear "
                             "after a symbol, e.g. not after another "
                             "vector or nil: " prev))
                (if (symbol? prev)
                  (let [subprops (map #(symbol (str prev) (str %)) prop)]
                    (-> ret
                        (update :props butlast)
                        (update :props concat subprops)
                        (update :props vec)
                        (assoc :prev prop)))))
              (-> ret
                  (update :props conj prop)
                  (assoc :prev prop))))]
    (:props (reduce parse-step {:props [] :prev nil} spec))))

(def fn-specs
  "Function specifications for all functions that are not Object

  [[name args & body :as f] props computed]
  (let [scope (fn-scope f)]
    (if (not= scope :static)
      (let [prop-names      (map :name props)
            computed-names  (map :name computed)
            this-index      (.indexOf args 'this)
            props-index     (.indexOf args 'props)
            actual-props    (if (>= props-index 0)
                              (args props-index)
