(defn parse-quote
[[_ expr :as form] env]
(when-not (= 2 (count form))
(throw (ex-info (str "Wrong number of args to quote, had: " (dec (count form)))
(merge {:form form}
(-source-info form env)))))
(let [const (analyze-const expr env)]
{:op :quote
:expr const
:form form
:env env
:literal? true
:children [:expr]}))