on master help sign in
Improve indentation in Transform.Definition
f536694Evan Czaplicki
src/Transform/Definition.hs+25−20
@@ -8,28 +8,33 @@ import qualified AST.Expression.Valid as Valid
8import qualified Transform.Expression as Expr
8import qualified Transform.Expression as Expr
9
9
10combineAnnotations :: [Source.Def] -> Either String [Valid.Def]
10combineAnnotations :: [Source.Def] -> Either String [Valid.Def]
11−combineAnnotations = go
11+combineAnnotations =
12+ go
12− where
13+ where
14+ errorMessage x =
13− msg x = "Syntax Error: The type annotation for '" ++ x ++
15+ "Syntax Error: The type annotation for '" ++ x ++
14− "' must be directly above its definition."
16+ "' must be directly above its definition."
15
17
18+ exprCombineAnnotations =
16− exprCombineAnnotations = Expr.crawlLet combineAnnotations
19+ Expr.crawlLet combineAnnotations
17
20
18− go defs =
21+ go defs =
19− case defs of
22+ case defs of
20− Source.TypeAnnotation name tipe : rest ->
23+ Source.TypeAnnotation name tipe : rest ->
21− case rest of
24+ case rest of
22− Source.Definition pat@(P.Var name') expr : rest'
25+ Source.Definition pat@(P.Var name') expr : rest'
23− | name == name' ->
26+ | name == name' ->
24− do expr' <- exprCombineAnnotations expr
27+ do expr' <- exprCombineAnnotations expr
25− let def = Valid.Definition pat expr' (Just tipe)
28+ let def = Valid.Definition pat expr' (Just tipe)
26− (:) def <$> go rest'
29+ (:) def <$> go rest'
27
30
31+ _ ->
28− _ -> Left (msg name)
32+ Left (errorMessage name)
29
33
30− Source.Definition pat expr : rest ->
34+ Source.Definition pat expr : rest ->
31− do expr' <- exprCombineAnnotations expr
35+ do expr' <- exprCombineAnnotations expr
32− let def = Valid.Definition pat expr' Nothing
36+ let def = Valid.Definition pat expr' Nothing
33− (:) def <$> go rest
37+ (:) def <$> go rest
34
38
39+ [] ->
35− [] -> return []
40+ return []