on 357dedf help sign in
elk/src/Reporting/Error.hs
55 lines 1.2 kB history raw
1{-# LANGUAGE OverloadedStrings #-}
2module Reporting.Error where
4import Data.Aeson ((.=))
5import qualified Data.Aeson as Json
7import qualified Reporting.Error.Canonicalize as Canonicalize
8import qualified Reporting.Error.Syntax as Syntax
9import qualified Reporting.Error.Type as Type
10import qualified Reporting.Region as R
13-- ALL POSSIBLE ERRORS
15data Error
16 = Syntax Syntax.Error
17 | Canonicalize Canonicalize.Error
18 | Type Type.Error
21-- TO STRING
23toString :: R.Region -> Error -> String
24toString region err =
25 case err of
26 Syntax syntaxError ->
27 Syntax.toString region syntaxError
29 Canonicalize canonicalizeError ->
30 Canonicalize.toString region canonicalizeError
32 Type typeError ->
33 Type.toString region typeError
36-- JSON
38toJson :: R.Region -> Error -> Json.Value
39toJson region err =
40 let json =
41 case err of
42 Syntax syntaxError ->
43 Syntax.toJson syntaxError
45 Canonicalize canonicalizeError ->
46 Canonicalize.toJson canonicalizeError
48 Type typeError ->
49 Type.toJson typeError
50 in
51 Json.object
52 [ "tag" .= ("error" :: String)
53 , "region" .= region
54 , "error" .= json
55 ]