diff options
Diffstat (limited to 'compiler/Language/Haskell/Syntax/Basic.hs')
-rw-r--r-- | compiler/Language/Haskell/Syntax/Basic.hs | 57 |
1 files changed, 54 insertions, 3 deletions
diff --git a/compiler/Language/Haskell/Syntax/Basic.hs b/compiler/Language/Haskell/Syntax/Basic.hs index ad3e0e94ba..092231b7d1 100644 --- a/compiler/Language/Haskell/Syntax/Basic.hs +++ b/compiler/Language/Haskell/Syntax/Basic.hs @@ -1,12 +1,13 @@ {-# LANGUAGE DeriveDataTypeable #-} module Language.Haskell.Syntax.Basic where -import Data.Int (Int) - +import Data.Data import Data.Eq +import Data.Ord import Data.Bool -import Data.Data +import Data.Int (Int) +import GHC.Data.FastString (FastString) {- ************************************************************************ @@ -42,4 +43,54 @@ type SumWidth = Int -- selector type ConTag = Int +{- +************************************************************************ +* * +Field Labels +* * +************************************************************************ +-} + +-- | Field labels are just represented as strings; +-- they are not necessarily unique (even within a module) +type FieldLabelString = FastString + + +{- +************************************************************************ +* * +Field Labels +* * +************************************************************************ +-} + +-- | See Note [Roles] in GHC.Core.Coercion +-- +-- Order of constructors matters: the Ord instance coincides with the *super*typing +-- relation on roles. +data Role = Nominal | Representational | Phantom + deriving (Eq, Ord, Data) + +{- +************************************************************************ +* * +Source Strictness and Unpackedness +* * +************************************************************************ +-} + +-- | Source Strictness +-- +-- What strictness annotation the user wrote +data SrcStrictness = SrcLazy -- ^ Lazy, ie '~' + | SrcStrict -- ^ Strict, ie '!' + | NoSrcStrict -- ^ no strictness annotation + deriving (Eq, Data) +-- | Source Unpackedness +-- +-- What unpackedness the user requested +data SrcUnpackedness = SrcUnpack -- ^ {-# UNPACK #-} specified + | SrcNoUnpack -- ^ {-# NOUNPACK #-} specified + | NoSrcUnpack -- ^ no unpack pragma + deriving (Eq, Data) |