@@ -4,7 +4,7 @@ module Parse.Type (expression, unionConstructor) where
44
55import Data.Text (Text)
66
7−import qualified AST.Type as Type
7+import qualified AST.Source as Src
88import Parse.Primitives (Parser, SParser, addLocation, checkSpace, getPosition, hint, spaces, oneOf)
99import qualified Parse.Primitives as P
1010import qualified Parse.Primitives.Symbol as Symbol
@@ -20,7 +20,7 @@ import qualified Reporting.Region as R
2020-- TYPE TERMS
2121
2222
23−term :: Parser Type.Raw
23+term :: Parser Src.Type
2424term =
2525 hint E.Type $
2626 do start <- getPosition
@@ -36,18 +36,18 @@ term =
3636-- TYPE VARIABLES
3737
3838
39−variable :: R.Position -> Parser Type.Raw
39+variable :: R.Position -> Parser Src.Type
4040variable start =
4141 do var <- Var.lower
4242 end <- getPosition
43− return (A.at start end (Type.RVar var))
43+ return (A.at start end (Src.TVar var))
4444
4545
4646
4747-- TYPE EXPRESSIONS
4848
4949
50−expression :: SParser Type.Raw
50+expression :: SParser Src.Type
5151expression =
5252 hint E.Type $
5353 do start <- getPosition
@@ -61,7 +61,7 @@ expression =
6161 Symbol.rightArrow
6262 spaces
6363 (tipe2, end2, pos2) <- expression
64− let tipe = A.at start end2 (Type.RLambda tipe1 tipe2)
64+ let tipe = A.at start end2 (Src.TLambda tipe1 tipe2)
6565 return ( tipe, end2, pos2 )
6666 , return ( tipe1, end1, pos1 )
6767 ]
@@ -71,26 +71,26 @@ expression =
7171-- TYPE CONSTRUCTORS
7272
7373
74−app0 :: Parser Type.Raw
74+app0 :: Parser Src.Type
7575app0 =
7676 do start <- getPosition
7777 (maybeQualifier, name) <- Var.foreignUpper
7878 end <- getPosition
7979 return $ A.at start end $
80− Type.RType (R.Region start end) maybeQualifier name []
80+ Src.TType (R.Region start end) maybeQualifier name []
8181
8282
83−app :: R.Position -> SParser Type.Raw
83+app :: R.Position -> SParser Src.Type
8484app start =
8585 do (maybeQualifier, name) <- Var.foreignUpper
8686 nameEnd <- getPosition
8787 namePos <- whitespace
8888 (args, end, pos) <- eatArgs [] nameEnd namePos
89− let tipe = Type.RType (R.Region start nameEnd) maybeQualifier name args
89+ let tipe = Src.TType (R.Region start nameEnd) maybeQualifier name args
9090 return ( A.at start end tipe, end, pos )
9191
9292
93−unionConstructor :: SParser (A.Located Text, [Type.Raw])
93+unionConstructor :: SParser (A.Located Text, [Src.Type])
9494unionConstructor =
9595 do start <- getPosition
9696 name <- Var.upper
@@ -100,7 +100,7 @@ unionConstructor =
100100 return ( (A.at start nameEnd name, args), end, pos )
101101
102102
103−eatArgs :: [Type.Raw] -> R.Position -> SPos -> SParser [Type.Raw]
103+eatArgs :: [Src.Type] -> R.Position -> SPos -> SParser [Src.Type]
104104eatArgs args end pos =
105105 oneOf
106106 [ do checkSpace pos
@@ -116,14 +116,14 @@ eatArgs args end pos =
116116-- TUPLES
117117
118118
119−tuple :: R.Position -> Parser Type.Raw
119+tuple :: R.Position -> Parser Src.Type
120120tuple start =
121121 do Symbol.leftParen
122122 P.inContext start E.TypeTuple $
123123 oneOf
124124 [ do Symbol.rightParen
125125 end <- getPosition
126− return (A.at start end Type.RUnit)
126+ return (A.at start end Src.TUnit)
127127 , do spaces
128128 (tipe, _, pos) <- expression
129129 checkSpace pos
@@ -131,7 +131,7 @@ tuple start =
131131 ]
132132
133133
134−tupleEnding :: R.Position -> Type.Raw -> [Type.Raw] -> Parser Type.Raw
134+tupleEnding :: R.Position -> Src.Type -> [Src.Type] -> Parser Src.Type
135135tupleEnding start firstType revTypes =
136136 oneOf
137137 [ do Symbol.comma
@@ -147,7 +147,7 @@ tupleEnding start firstType revTypes =
147147
148148 secondType : otherTypes ->
149149 return $ A.at start end $
150− Type.RTuple firstType secondType otherTypes
150+ Src.TTuple firstType secondType otherTypes
151151 ]
152152
153153
@@ -155,7 +155,7 @@ tupleEnding start firstType revTypes =
155155-- RECORD
156156
157157
158−record :: R.Position -> Parser Type.Raw
158+record :: R.Position -> Parser Src.Type
159159record start =
160160 do Symbol.leftCurly
161161 P.inContext start E.TypeRecord $
@@ -163,7 +163,7 @@ record start =
163163 oneOf
164164 [ do Symbol.rightCurly
165165 end <- getPosition
166− return (A.at start end (Type.RRecord [] Nothing))
166+ return (A.at start end (Src.TRecord [] Nothing))
167167 , do var <- addLocation Var.lower
168168 spaces
169169 oneOf
@@ -172,19 +172,19 @@ record start =
172172 firstField <- field
173173 fields <- chompFields [firstField]
174174 end <- getPosition
175− return (A.at start end (Type.RRecord fields (Just (A.map Type.RVar var))))
175+ return (A.at start end (Src.TRecord fields (Just (A.map Src.TVar var))))
176176 , do Symbol.hasType
177177 spaces
178178 (tipe, _, nextPos) <- expression
179179 checkSpace nextPos
180180 fields <- chompFields [(var, tipe)]
181181 end <- getPosition
182− return (A.at start end (Type.RRecord fields Nothing))
182+ return (A.at start end (Src.TRecord fields Nothing))
183183 ]
184184 ]
185185
186186
187−type Field = ( A.Located Text, Type.Raw )
187+type Field = ( A.Located Text, Src.Type )
188188
189189
190190chompFields :: [Field] -> Parser [Field]