 (defn this-file [line-number]
   ["t_core.clj" line-number])
 
+
 ;; Throughout this file, file positions are captured outside of
 ;; facts. That's because facts have their own mechanism for file
 ;; position, and I want it to be clear that this is just working with










(def line-marker-2 25)
(unfinished f)
(let [fake-on-one-line (fake (f 1) => 33)
      multiline-with-position-at-first-token (fake

                                              (f 1)

                                              =>

                                              33)]
  (fact "fake, being a one-level macro, knows its file position as a single line"
    (:position fake-on-one-line) => (this-file (+ 2 line-marker-2))
    (:position multiline-with-position-at-first-token) => (this-file (+ 5 line-marker-2))))

(defmacro result-of-second-form [& forms] (second forms))

(def line-marker-3 (+ line-marker-2 16))
(let [fake (result-of-second-form
            "random garbage"
            (fake (f 1) => 33)

  (fact "Macros within dirt-simple macroexpansions find their correct file position"
    (:position fake) => (this-file (+ 3 line-marker-3))))


(defmacro fake-constructor [& forms]
  `(do
     (fake ~(nth forms 1) => ~(nth forms 3))))


(def line-marker-4 54)
(let [fake (fake-constructor
                      "random garbage"
                      (f 1) => 33)]
