on master help sign in
Whitespace upgrade: simple changes
5670bd6Evan Czaplicki
src/Parse/Declaration.hs+16−16
@@ -37,8 +37,8 @@ docDecl :: R.Position -> SParser Decl.Source
37docDecl start =
37docDecl start =
38 do comment <- docComment
38 do comment <- docComment
39 end <- getPosition
39 end <- getPosition
40− space <- whitespace
40+ pos <- whitespace
41− return ( Decl.Comment (A.at start end comment), end, space )
41+ return ( Decl.Comment (A.at start end comment), end, pos )
42
42
43
43
44-- TYPE ANNOTATIONS and DEFINITIONS
44-- TYPE ANNOTATIONS and DEFINITIONS
@@ -46,9 +46,9 @@ docDecl start =
46
46
47defDecl :: R.Position -> SParser Decl.Source
47defDecl :: R.Position -> SParser Decl.Source
48defDecl start =
48defDecl start =
49− do (def, end, space) <- Expr.definition
49+ do (def, end, pos) <- Expr.definition
50 let decl = A.at start end (Decl.Def def)
50 let decl = A.at start end (Decl.Def def)
51− return ( Decl.Whatever decl, end, space )
51+ return ( Decl.Whatever decl, end, pos )
52
52
53
53
54
54
@@ -63,14 +63,14 @@ typeDecl start =
63 [ do keyword "alias"
63 [ do keyword "alias"
64 spaces
64 spaces
65 (name, args) <- nameArgsEquals
65 (name, args) <- nameArgsEquals
66− (tipe, end, space) <- Type.expression
66+ (tipe, end, pos) <- Type.expression
67 let decl = A.at start end (Decl.Alias (Decl.Type name args tipe))
67 let decl = A.at start end (Decl.Alias (Decl.Type name args tipe))
68− return ( Decl.Whatever decl, end, space )
68+ return ( Decl.Whatever decl, end, pos )
69 , do (name, args) <- nameArgsEquals
69 , do (name, args) <- nameArgsEquals
70 (firstCtor, firstEnd, firstSpace) <- Type.unionConstructor
70 (firstCtor, firstEnd, firstSpace) <- Type.unionConstructor
71− (ctors, end, space) <- chompConstructors [firstCtor] firstEnd firstSpace
71+ (ctors, end, pos) <- chompConstructors [firstCtor] firstEnd firstSpace
72 let decl = A.at start end (Decl.Union (Decl.Type name args ctors))
72 let decl = A.at start end (Decl.Union (Decl.Type name args ctors))
73− return ( Decl.Whatever decl, end, space )
73+ return ( Decl.Whatever decl, end, pos )
74 ]
74 ]
75
75
76
76
@@ -93,15 +93,15 @@ nameArgsEqualsHelp name args =
93 ]
93 ]
94
94
95
95
96−chompConstructors :: [(Text, [Type.Raw])] -> R.Position -> Space -> SParser [(Text, [Type.Raw])]
96+chompConstructors :: [(Text, [Type.Raw])] -> R.Position -> SPos -> SParser [(Text, [Type.Raw])]
97−chompConstructors ctors end space =
97+chompConstructors ctors end pos =
98 oneOf
98 oneOf
99− [ do checkSpaces space
99+ [ do checkSpace pos
100 pipe
100 pipe
101 spaces
101 spaces
102 (ctor, newEnd, newSpace) <- Type.unionConstructor
102 (ctor, newEnd, newSpace) <- Type.unionConstructor
103 chompConstructors (ctor:ctors) newEnd newSpace
103 chompConstructors (ctor:ctors) newEnd newSpace
104− , return ( reverse ctors, end, space )
104+ , return ( reverse ctors, end, pos )
105 ]
105 ]
106
106
107
107
@@ -128,9 +128,9 @@ infixDeclHelp start assoc =
128 spaces
128 spaces
129 op <- infixOp
129 op <- infixOp
130 end <- getPosition
130 end <- getPosition
131− space <- whitespace
131+ pos <- whitespace
132 let decl = A.at start end (Decl.Fixity (Decl.Infix op assoc n))
132 let decl = A.at start end (Decl.Fixity (Decl.Infix op assoc n))
133− return ( Decl.Whatever decl, end, space )
133+ return ( Decl.Whatever decl, end, pos )
134
134
135
135
136
136
@@ -145,7 +145,7 @@ portDecl start =
145 spaces
145 spaces
146 hasType
146 hasType
147 spaces
147 spaces
148− (tipe, end, space) <- Type.expression
148+ (tipe, end, pos) <- Type.expression
149 let decl = A.at start end (Decl.Port name tipe)
149 let decl = A.at start end (Decl.Port name tipe)
150− return ( Decl.Whatever decl, end, space )
150+ return ( Decl.Whatever decl, end, pos )
151
151
src/Parse/Module.hs+9−14
@@ -2,7 +2,6 @@
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3module Parse.Module where
3module Parse.Module where
4
4
5−import Control.Monad (guard)
6import Data.Text (Text)
5import Data.Text (Text)
7
6
8import qualified AST.Module as Module
7import qualified AST.Module as Module
@@ -18,8 +17,7 @@ import qualified Reporting.Region as R
18
17
19header :: Parser (Module.Header [Module.UserImport])
18header :: Parser (Module.Header [Module.UserImport])
20header =
19header =
21− do space <- whitespace
20+ do freshLine
22− guard (space == Freshline || space == None)
23 oneOf
21 oneOf
24 [ fullHeader
22 [ fullHeader
25 , Module.defaultHeader <$> chompImports []
23 , Module.defaultHeader <$> chompImports []
@@ -143,12 +141,12 @@ chompImports imports =
143 spaces
141 spaces
144 name <- qualifiedCapVar
142 name <- qualifiedCapVar
145 end <- getPosition
143 end <- getPosition
146− space <- whitespace
144+ pos <- whitespace
147 oneOf
145 oneOf
148− [ do guard (space == Freshline)
146+ [ do checkFreshline pos
149 let userImport = method start end name Nothing Var.closedListing
147 let userImport = method start end name Nothing Var.closedListing
150 chompImports (userImport:imports)
148 chompImports (userImport:imports)
151− , do checkSpaces space
149+ , do checkSpace pos
152 oneOf
150 oneOf
153 [ chompAs start name imports
151 [ chompAs start name imports
154 , chompExposing start name Nothing imports
152 , chompExposing start name Nothing imports
@@ -164,12 +162,12 @@ chompAs start name imports =
164 spaces
162 spaces
165 alias <- capVar
163 alias <- capVar
166 end <- getPosition
164 end <- getPosition
167− space <- whitespace
165+ pos <- whitespace
168 oneOf
166 oneOf
169− [ do guard (space == Freshline)
167+ [ do checkFreshline pos
170 let userImport = method start end name (Just alias) Var.closedListing
168 let userImport = method start end name (Just alias) Var.closedListing
171 chompImports (userImport:imports)
169 chompImports (userImport:imports)
172− , do checkSpaces space
170+ , do checkSpace pos
173 chompExposing start name (Just alias) imports
171 chompExposing start name (Just alias) imports
174 ]
172 ]
175
173
@@ -249,9 +247,6 @@ listingValue =
249
247
250freshLine :: Parser ()
248freshLine :: Parser ()
251freshLine =
249freshLine =
252− do space <- whitespace
250+ do pos <- whitespace
253− if space == Freshline
251+ checkFreshline pos
254− then return ()
255− else failure (error "TODO freshLine")
256−
257
252
src/Parse/Parse.hs+5−5
@@ -1,8 +1,8 @@
1{-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
1{-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
2module Parse.Parse (program) where
2module Parse.Parse (program) where
3
3
4−import Control.Monad (guard)
4+import qualified Data.Text as Text
5−import Data.Text (Text, unpack)
5+import Data.Text (Text)
6
6
7import qualified AST.Declaration as Decl
7import qualified AST.Declaration as Decl
8import qualified AST.Module as Module
8import qualified AST.Module as Module
@@ -25,7 +25,7 @@ program pkgName src =
25 Validate.validate modul
25 Validate.validate modul
26
26
27 Left err ->
27 Left err ->
28− error (unlines $ take 10 $ "TODO program parse error" : lines (unpack src)) err
28+ error ("TODO program parse error\n" ++ show err ++ "\n" ++ Text.unpack (Text.take 100 src))
29
29
30
30
31chompProgram :: Package.Name -> Parser Module.Source
31chompProgram :: Package.Name -> Parser Module.Source
@@ -40,9 +40,9 @@ chompProgram pkgName =
40
40
41chompDeclarations :: [Decl.Source] -> Parser [Decl.Source]
41chompDeclarations :: [Decl.Source] -> Parser [Decl.Source]
42chompDeclarations decls =
42chompDeclarations decls =
43− do (decl, _, space) <- Parse.declaration
43+ do (decl, _, pos) <- Parse.declaration
44 oneOf
44 oneOf
45− [ do guard (space == Freshline)
45+ [ do checkFreshline pos
46 chompDeclarations (decl:decls)
46 chompDeclarations (decl:decls)
47 , return (reverse (decl:decls))
47 , return (reverse (decl:decls))
48 ]
48 ]