on master help sign in
Move Super type into AST.Types
commita0fccd57646777f2b72230fee528fd9e70441359 authorEvan Czaplicki <evancz@users.noreply.github.com> dateMon 17 Jul 2017, 11:05 (9 years ago) parent34a253d
3 files changed+26−21
src/AST/Type.hs+9 src/Type/Type.hs+16−21 src/Type/Unify.hs+1
src/AST/Type.hs+9
@@ -3,6 +3,7 @@
33module AST.Type
44 ( Raw, Raw'(..)
55 , Canonical(..), Aliased(..)
6+ , Super(..)
67 , deepDealias, iteratedDealias, dealias
78 , collectLambdas
89 , tuple, cmd, sub
@@ -52,6 +53,14 @@ data Aliased t
5253 deriving (Eq, Ord)
5354
5455
56+data Super
57+ = Number
58+ | Comparable
59+ | Appendable
60+ | CompAppend
61+ deriving (Eq)
62+
63+
5564
5665-- CONSTRUCT USEFUL TYPES
5766
src/Type/Type.hs+16−21
@@ -7,7 +7,6 @@ module Type.Type
77 , Descriptor(Descriptor)
88 , Content(..)
99 , Flex(..)
10− , Super(..)
1110 , noRank
1211 , outermostRank
1312 , Mark
@@ -76,7 +75,7 @@ data Descriptor =
7675
7776data Content
7877 = Structure FlatType
79− | Var Flex (Maybe Super) (Maybe Text)
78+ | Var Flex (Maybe T.Super) (Maybe Text)
8079 | Alias Var.Canonical [(Text,Variable)] Variable
8180 | Error Text
8281
@@ -91,12 +90,8 @@ data Flex
9190 | Flex
9291
9392
94−data Super
95− = Number
96− | Comparable
97− | Appendable
98− | CompAppend
99− deriving (Eq)
93+
94+-- RANKS
10095
10196
10297noRank :: Int
@@ -207,10 +202,10 @@ mkFlexNumber =
207202{-# NOINLINE flexNumberDescriptor #-}
208203flexNumberDescriptor :: Descriptor
209204flexNumberDescriptor =
210− makeDescriptor (unnamedFlexSuper Number)
205+ makeDescriptor (unnamedFlexSuper T.Number)
211206
212207
213−unnamedFlexSuper :: Super -> Content
208+unnamedFlexSuper :: T.Super -> Content
214209unnamedFlexSuper super =
215210 Var Flex (Just super) Nothing
216211
@@ -224,19 +219,19 @@ mkNamedVar flex name =
224219 UF.fresh $ makeDescriptor $ Var flex (toSuper name) (Just name)
225220
226221
227−toSuper :: Text -> Maybe Super
222+toSuper :: Text -> Maybe T.Super
228223toSuper name =
229224 if Text.isPrefixOf "number" name then
230− Just Number
225+ Just T.Number
231226
232227 else if Text.isPrefixOf "comparable" name then
233− Just Comparable
228+ Just T.Comparable
234229
235230 else if Text.isPrefixOf "appendable" name then
236− Just Appendable
231+ Just T.Appendable
237232
238233 else if Text.isPrefixOf "compappend" name then
239− Just CompAppend
234+ Just T.CompAppend
240235
241236 else
242237 Nothing
@@ -345,7 +340,7 @@ makeNameState taken =
345340 NameState taken 0 0 0 0 0
346341
347342
348−getFreshName :: (Monad m) => Maybe Super -> StateT NameState m Text
343+getFreshName :: (Monad m) => Maybe T.Super -> StateT NameState m Text
349344getFreshName maybeSuper =
350345 case maybeSuper of
351346 Nothing ->
@@ -355,16 +350,16 @@ getFreshName maybeSuper =
355350 State.modify (\state -> state { _normals = newIndex })
356351 return uniqueName
357352
358− Just Number ->
353+ Just T.Number ->
359354 getFreshSuper "number" _numbers (\index state -> state { _numbers = index })
360355
361− Just Comparable ->
356+ Just T.Comparable ->
362357 getFreshSuper "comparable" _comparables (\index state -> state { _comparables = index })
363358
364− Just Appendable ->
359+ Just T.Appendable ->
365360 getFreshSuper "appendable" _appendables (\index state -> state { _appendables = index })
366361
367− Just CompAppend ->
362+ Just T.CompAppend ->
368363 getFreshSuper "compappend" _compAppends (\index state -> state { _compAppends = index })
369364
370365
@@ -458,7 +453,7 @@ getVarNames var =
458453 getVarNames extension
459454
460455
461−addVarName :: Int -> Text -> Variable -> Flex -> Maybe Super -> TakenNames -> IO TakenNames
456+addVarName :: Int -> Text -> Variable -> Flex -> Maybe T.Super -> TakenNames -> IO TakenNames
462457addVarName index givenName var flex maybeSuper taken =
463458 let
464459 name =
src/Type/Unify.hs+1
@@ -8,6 +8,7 @@ import qualified Data.Map as Map
88import qualified Data.Maybe as Maybe
99import Data.Text (Text)
1010
11+import AST.Type (Super(..))
1112import qualified AST.Variable as Var
1213import qualified Reporting.Region as R
1314import qualified Reporting.Error.Type as Error