@@ -4,13 +4,11 @@ module Reporting.Error where
44
55import Data.Aeson ((.=))
66import qualified Data.Aeson as Json
7−import qualified Data.Aeson.Types as Json
87
98import qualified Reporting.Annotation as A
109import qualified Reporting.Error.Canonicalize as Canonicalize
1110import qualified Reporting.Error.Syntax as Syntax
1211import qualified Reporting.Error.Type as Type
13−import qualified Reporting.Region as Region
1412import qualified Reporting.Report as Report
1513
1614
@@ -43,13 +41,13 @@ toString location source (A.A region err) =
4341
4442-- TO JSON
4543
46−toJson :: String -> A.Located Error -> Json.Value
47−toJson location (A.A region err) =
44+toJson :: FilePath -> A.Located Error -> Json.Value
45+toJson filePath (A.A region err) =
4846 let
4947 (maybeRegion, additionalFields) =
5048 case err of
5149 Syntax syntaxError ->
52− reportToJson [] (Syntax.toReport syntaxError)
50+ Report.toJson [] (Syntax.toReport syntaxError)
5351
5452 Canonicalize canonicalizeError ->
5553 let
@@ -58,29 +56,14 @@ toJson location (A.A region err) =
5856 (\s -> ["suggestions" .= s])
5957 (Canonicalize.extractSuggestions canonicalizeError)
6058 in
61− reportToJson suggestions (Canonicalize.toReport canonicalizeError)
59+ Report.toJson suggestions (Canonicalize.toReport canonicalizeError)
6260
6361 Type typeError ->
64− reportToJson [] (Type.toReport typeError)
62+ Report.toJson [] (Type.toReport typeError)
6563 in
6664 Json.object $
67− [ "file" .= location
65+ [ "file" .= filePath
6866 , "region" .= maybe region id maybeRegion
6967 , "type" .= ("error" :: String)
7068 ]
7169 ++ additionalFields
72−
73−
74−reportToJson
75− :: [Json.Pair]
76− -> Report.Report
77− -> (Maybe Region.Region, [Json.Pair])
78−reportToJson extraFields (Report.Report title subregion pre post) =
79− let
80− fields =
81− [ "tag" .= title
82− , "overview" .= pre
83− , "details" .= post
84− ]
85− in
86− (subregion, fields ++ extraFields)