   [rdr & msg]
   (throw (ex-info (apply str msg)
                   (merge {:type :reader-exception}
-                         (if (indexing-reader? rdr)
+                         (when (indexing-reader? rdr)
                            {:line (get-line-number rdr)
                             :column (get-column-number rdr)})))))
 


  IndexingReader
  (get-line-number [reader] (int (inc line)))
  (get-column-number [reader]  (int column)))

(extend-type java.io.PushbackReader
  Reader

(defn read-symbol
  [rdr initch]
  (when-let [token (read-token rdr initch)]
    (let [[line column] (when (indexing-reader? rdr)
                          [(get-line-number rdr) (dec (get-column-number rdr))])]
      (case token

        ;; special symbols
        "nil" nil
        "true" true
        "false" false
        "/" '/
        "NaN" Double/NaN
        "-Infinity" Double/NEGATIVE_INFINITY
        ("Infinity" "+Infinity") Double/POSITIVE_INFINITY

        (or (when-let [p (parse-symbol token)]
              (with-meta (symbol (p 0) (p 1))
                (when line
                  {:line line :column column})))
            (reader-error rdr "Invalid token: " token))))))

(def ^:dynamic *alias-map* nil)
(defn- resolve-ns [sym]
