on master help sign in
style: modern indentation and more type signatures
commit6398333aa2f97667e66fa5b95671706be2101485 authorEvan Czaplicki <info@elm-lang.org> dateTue 16 Dec 2014, 15:26 (12 years ago) parent52f8f64
1 file changed+62−24
src/AST/Annotation.hs+62−24
src/AST/Annotation.hs+62−24
@@ -4,59 +4,97 @@ import qualified Text.Parsec.Pos as Parsec
44import qualified Text.PrettyPrint as P
55import AST.PrettyPrint
66
7−data Annotated annotation expr = A annotation expr
7+
8+data Annotated annotation expr
9+ = A annotation expr
810 deriving (Show)
911
12+
1013data Region
1114 = Span Position Position P.Doc
1215 | None P.Doc
1316 deriving (Show)
1417
18+
1519data Position = Position
1620 { line :: Int
1721 , column :: Int
18− } deriving (Show)
22+ }
23+ deriving (Show)
24+
25+
26+type Located expr =
27+ Annotated Region expr
1928
20−type Located expr = Annotated Region expr
2129
22−none e = A (None (pretty e)) e
23−noneNoDocs e = A (None P.empty) e
30+none :: (Pretty expr) => expr -> Located expr
31+none e =
32+ A (None (pretty e)) e
2433
25−at :: (Pretty expr) => Parsec.SourcePos -> Parsec.SourcePos -> expr
26− -> Annotated Region expr
34+
35+noneNoDocs :: a -> Located a
36+noneNoDocs e =
37+ A (None P.empty) e
38+
39+
40+at :: (Pretty expr)
41+ => Parsec.SourcePos
42+ -> Parsec.SourcePos
43+ -> expr
44+ -> Annotated Region expr
2745at start end e =
2846 A (Span (position start) (position end) (pretty e)) e
29− where
30− position loc = Position (Parsec.sourceLine loc) (Parsec.sourceColumn loc)
47+ where
48+ position loc =
49+ Position (Parsec.sourceLine loc) (Parsec.sourceColumn loc)
3150
51+
52+merge :: (Pretty expr) => Located a -> Located b -> expr -> Located expr
3253merge (A s1 _) (A s2 _) e =
3354 A (span (pretty e)) e
34− where
35− span = case (s1,s2) of
36− (Span start _ _, Span _ end _) -> Span start end
37− (Span start end _, _) -> Span start end
38− (_, Span start end _) -> Span start end
39− (_, _) -> None
55+ where
56+ span =
57+ case (s1,s2) of
58+ (Span start _ _, Span _ end _) ->
59+ Span start end
60+
61+ (Span start end _, _) ->
62+ Span start end
4063
64+ (_, Span start end _) ->
65+ Span start end
66+
67+ (_, _) -> None
68+
69+
70+mergeOldDocs :: Located a -> Located b -> c -> Located c
4171mergeOldDocs (A s1 _) (A s2 _) e =
4272 A span e
43− where
44− span = case (s1,s2) of
45− (Span start _ d1, Span _ end d2) ->
46− Span start end (P.vcat [d1, P.text "\n", d2])
73+ where
74+ span =
75+ case (s1,s2) of
76+ (Span start _ d1, Span _ end d2) ->
77+ Span start end (P.vcat [d1, P.text "\n", d2])
78+
79+ (Span _ _ _, _) -> s1
80+
81+ (_, Span _ _ _) -> s2
82+
83+ (_, _) -> None P.empty
4784
48− (Span _ _ _, _) -> s1
49− (_, Span _ _ _) -> s2
50− (_, _) -> None P.empty
5185
5286sameAs :: Annotated a expr -> expr' -> Annotated a expr'
53−sameAs (A annotation _) expr = A annotation expr
87+sameAs (A annotation _) expr =
88+ A annotation expr
89+
5490
91+getRegionDocs :: Region -> P.Doc
5592getRegionDocs region =
5693 case region of
5794 Span _ _ doc -> doc
5895 None doc -> doc
5996
97+
6098instance Pretty Region where
6199 pretty span =
62100 case span of
@@ -68,6 +106,6 @@ instance Pretty Region where
68106 True -> "on line " ++ show (line end) ++ ", column " ++
69107 show (column start) ++ " to " ++ show (column end)
70108
109+
71110instance Pretty e => Pretty (Annotated a e) where
72111 pretty (A _ e) = pretty e
73−