# testing the prelude
(try (os/cd "janet") ([_] nil))
(import /scanner :as s)
(import /parser :as p)
(import /validate :as v)
(import /interpreter :as i)
(import /errors :as e)
(import /base :as b)
(import /load-prelude :as pre)
(use judge)

(defn run [source]
 (when (= :error pre/pkg) (error "could not load prelude"))
 (def ctx @{:^parent pre/ctx})
 (def scanned (s/scan source :test))
 (when (any? (scanned :errors))
  (e/scan-error (scanned :errors)) (error "scanning errors"))
 (def parsed (p/parse scanned))
 (when (any? (parsed :errors))
  (e/parse-error (parsed :errors)) (error "parsing errors"))
 (def valid (v/valid parsed ctx))
 (when (any? (valid :errors)) (each err (valid :errors)
  (e/validation-error err)) (error "validation errors"))
 (i/interpret (parsed :ast) ctx))

(deftest "debug add_msg"
 (test (run `
  let msgs = [1, :foo, nil]
  let msg =	do msgs > map (string, _)
  msg
 `)
   @["1" ":foo" ":^nil"])
 # (test (run `print! ("foo", "bar")`) :ok)
)
