@@ -3,12 +3,13 @@ module Reporting.Region
3 ( Region(..)
3 ( Region(..)
4 , Position(..)
4 , Position(..)
9−import Data.Aeson ((.=))
10+
10−import qualified Data.Aeson as Json
11+import qualified Json.Encode as Json
11−import Data.Binary
12+import Data.Binary (Binary, get, put)
@@ -33,27 +34,27 @@ data Position =
34merge :: Region -> Region -> Region
35merge :: Region -> Region -> Region
35merge (Region start _) (Region _ end) =
36merge (Region start _) (Region _ end) =
36− Region start end
37+ Region start end
43−instance Json.ToJSON Region where
44+encode :: Region -> Json.Value
44− toJSON (Region start end) =
45+encode (Region start end) =
45− Json.object
46+ Json.object
46− [ "start" .= start
47+ [ ("start", encodePosition start)
47− , "end" .= end
48+ , ("end", encodePosition end)
51−instance Json.ToJSON Position where
52+encodePosition :: Position -> Json.Value
52− toJSON (Position line column) =
53+encodePosition (Position line column) =
53− Json.object
54+ Json.object
54− [ "line" .= line
55+ [ ("line", Json.int line)
55− , "column" .= column
56+ , ("column", Json.int column)