aboutsummaryrefslogtreecommitdiff
path: root/cljcc-compiler/src/cljcc/exception.cljc
blob: 40ea930ce2cd8545fea44c92d8f34d6574baf057 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(ns cljcc.exception)

(defn lex-error [{line :line col :col :as data}]
  (throw (ex-info
          (format "Invalid token at line: %s, col: %s." line col)
          (merge {:error/type :lexer} data))))

(defn parser-error [msg data]
  (throw (ex-info msg (merge {:error/type :parser} data))))

(defn analyzer-error [msg data]
  (throw (ex-info msg (merge {:error/type :analyzer} data))))

(defn tacky-error [msg data]
  (throw (ex-info msg (merge {:error/type :tacky} data))))

(defn compiler-error [msg data]
  (throw (ex-info msg (merge {:error/type :compiler} data))))

(defn emit-error [msg data]
  (throw (ex-info msg (merge {:error/type :emit} data))))