@@ -42,19 +42,19 @@ variable =
4242expression :: SParser Type.Raw
4343expression =
4444 do start <- getPosition
45− (tipe1, end1, space1) <-
45+ (tipe1, end1, pos1) <-
4646 oneOf
4747 [ app start
4848 , (,,) <$> term <*> getPosition <*> whitespace
4949 ]
5050 oneOf
51− [ do checkSpaces space1
51+ [ do checkSpace pos1
5252 rightArrow
5353 spaces
54− (tipe2, end2, space2) <- expression
54+ (tipe2, end2, pos2) <- expression
5555 let tipe = A.at start end2 (Type.RLambda tipe1 tipe2)
56− return ( tipe, end2, space2 )
57− , return ( tipe1, end1, space1 )
56+ return ( tipe, end2, pos2 )
57+ , return ( tipe1, end1, pos1 )
5858 ]
5959
6060
@@ -72,18 +72,18 @@ app :: R.Position -> SParser Type.Raw
7272app start =
7373 do ctor <- constructor
7474 ctorEnd <- getPosition
75− ctorSpace <- whitespace
76− (args, end, space) <- eatArgs [] ctorEnd ctorSpace
75+ ctorPos <- whitespace
76+ (args, end, pos) <- eatArgs [] ctorEnd ctorPos
7777 case args of
7878 [] ->
79− return ( ctor, end, space )
79+ return ( ctor, end, pos )
8080
8181 _ ->
8282 let
8383 tipe =
8484 A.at start end (Type.RApp ctor args)
8585 in
86− return ( tipe, end, space )
86+ return ( tipe, end, pos )
8787
8888
8989unionConstructor :: SParser (Text, [Type.Raw])
@@ -95,15 +95,15 @@ unionConstructor =
9595 return ( (ctor, args), end, space )
9696
9797
98−eatArgs :: [Type.Raw] -> R.Position -> Space -> SParser [Type.Raw]
99−eatArgs args end space =
98+eatArgs :: [Type.Raw] -> R.Position -> SPos -> SParser [Type.Raw]
99+eatArgs args end pos =
100100 oneOf
101− [ do checkSpaces space
101+ [ do checkSpace pos
102102 arg <- term
103103 newEnd <- getPosition
104104 newSpace <- whitespace
105105 eatArgs (arg:args) newEnd newSpace
106− , return ( reverse args, end, space )
106+ , return ( reverse args, end, pos )
107107 ]
108108
109109
@@ -120,8 +120,8 @@ tuple =
120120 end <- getPosition
121121 return (Type.tuple (R.Region start end) [])
122122 , do spaces
123− (tipe, _, space) <- expression
124− checkSpaces space
123+ (tipe, _, pos) <- expression
124+ checkSpace pos
125125 tupleEnding start [tipe]
126126 ]
127127
@@ -131,8 +131,8 @@ tupleEnding start tipes =
131131 oneOf
132132 [ do comma
133133 spaces
134− (tipe, _, space) <- expression
135− checkSpaces space
134+ (tipe, _, pos) <- expression
135+ checkSpace pos
136136 tupleEnding start (tipe : tipes)
137137 , do rightParen
138138 end <- getPosition
@@ -167,8 +167,8 @@ record =
167167 return (Type.RRecord fields (Just (A.map Type.RVar var)))
168168 , do hasType
169169 spaces
170− (tipe, _, nextSpace) <- expression
171− checkSpaces nextSpace
170+ (tipe, _, nextPos) <- expression
171+ checkSpace nextPos
172172 fields <- chompFields [(var, tipe)]
173173 return (Type.RRecord fields Nothing)
174174 ]
@@ -186,7 +186,7 @@ chompFields fields =
186186 f <- field
187187 chompFields (f : fields)
188188 , do rightCurly
189− return fields
189+ return (reverse fields)
190190 ]
191191
192192
@@ -196,6 +196,6 @@ field =
196196 spaces
197197 hasType
198198 spaces
199− (tipe, _, endSpace) <- expression
200− checkSpaces endSpace
199+ (tipe, _, endPos) <- expression
200+ checkSpace endPos
201201 return (name, tipe)