@@ -42,19 +42,19 @@ variable =
42expression :: SParser Type.Raw
42expression :: SParser Type.Raw
43expression =
43expression =
44 do start <- getPosition
44 do start <- getPosition
45− (tipe1, end1, space1) <-
45+ (tipe1, end1, pos1) <-
47 [ app start
47 [ app start
48 , (,,) <$> term <*> getPosition <*> whitespace
48 , (,,) <$> term <*> getPosition <*> whitespace
51− [ do checkSpaces space1
51+ [ do checkSpace pos1
52 rightArrow
52 rightArrow
54− (tipe2, end2, space2) <- expression
54+ (tipe2, end2, pos2) <- expression
55 let tipe = A.at start end2 (Type.RLambda tipe1 tipe2)
55 let tipe = A.at start end2 (Type.RLambda tipe1 tipe2)
56− return ( tipe, end2, space2 )
56+ return ( tipe, end2, pos2 )
57− , return ( tipe1, end1, space1 )
57+ , return ( tipe1, end1, pos1 )
@@ -72,18 +72,18 @@ app :: R.Position -> SParser Type.Raw
72app start =
72app start =
73 do ctor <- constructor
73 do ctor <- constructor
74 ctorEnd <- getPosition
74 ctorEnd <- getPosition
75− ctorSpace <- whitespace
75+ ctorPos <- whitespace
76− (args, end, space) <- eatArgs [] ctorEnd ctorSpace
76+ (args, end, pos) <- eatArgs [] ctorEnd ctorPos
77 case args of
77 case args of
79− return ( ctor, end, space )
79+ return ( ctor, end, pos )
84 A.at start end (Type.RApp ctor args)
84 A.at start end (Type.RApp ctor args)
86− return ( tipe, end, space )
86+ return ( tipe, end, pos )
89unionConstructor :: SParser (Text, [Type.Raw])
89unionConstructor :: SParser (Text, [Type.Raw])
@@ -95,15 +95,15 @@ unionConstructor =
95 return ( (ctor, args), end, space )
95 return ( (ctor, args), end, space )
98−eatArgs :: [Type.Raw] -> R.Position -> Space -> SParser [Type.Raw]
98+eatArgs :: [Type.Raw] -> R.Position -> SPos -> SParser [Type.Raw]
99−eatArgs args end space =
99+eatArgs args end pos =
101− [ do checkSpaces space
101+ [ do checkSpace pos
102 arg <- term
102 arg <- term
103 newEnd <- getPosition
103 newEnd <- getPosition
104 newSpace <- whitespace
104 newSpace <- whitespace
105 eatArgs (arg:args) newEnd newSpace
105 eatArgs (arg:args) newEnd newSpace
106− , return ( reverse args, end, space )
106+ , return ( reverse args, end, pos )
@@ -120,8 +120,8 @@ tuple =
120 end <- getPosition
120 end <- getPosition
121 return (Type.tuple (R.Region start end) [])
121 return (Type.tuple (R.Region start end) [])
122 , do spaces
122 , do spaces
123− (tipe, _, space) <- expression
123+ (tipe, _, pos) <- expression
124− checkSpaces space
124+ checkSpace pos
125 tupleEnding start [tipe]
125 tupleEnding start [tipe]
@@ -131,8 +131,8 @@ tupleEnding start tipes =
132 [ do comma
132 [ do comma
134− (tipe, _, space) <- expression
134+ (tipe, _, pos) <- expression
135− checkSpaces space
135+ checkSpace pos
136 tupleEnding start (tipe : tipes)
136 tupleEnding start (tipe : tipes)
137 , do rightParen
137 , do rightParen
138 end <- getPosition
138 end <- getPosition
@@ -167,8 +167,8 @@ record =
167 return (Type.RRecord fields (Just (A.map Type.RVar var)))
167 return (Type.RRecord fields (Just (A.map Type.RVar var)))
168 , do hasType
168 , do hasType
170− (tipe, _, nextSpace) <- expression
170+ (tipe, _, nextPos) <- expression
171− checkSpaces nextSpace
171+ checkSpace nextPos
172 fields <- chompFields [(var, tipe)]
172 fields <- chompFields [(var, tipe)]
173 return (Type.RRecord fields Nothing)
173 return (Type.RRecord fields Nothing)
@@ -186,7 +186,7 @@ chompFields fields =
186 f <- field
186 f <- field
187 chompFields (f : fields)
187 chompFields (f : fields)
188 , do rightCurly
188 , do rightCurly
189− return fields
189+ return (reverse fields)
@@ -196,6 +196,6 @@ field =
199− (tipe, _, endSpace) <- expression
199+ (tipe, _, endPos) <- expression
200− checkSpaces endSpace
200+ checkSpace endPos
201 return (name, tipe)
201 return (name, tipe)