summaryrefslogtreecommitdiff
path: root/compiler/Language/Haskell/Syntax/Basic.hs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/Language/Haskell/Syntax/Basic.hs')
-rw-r--r--compiler/Language/Haskell/Syntax/Basic.hs57
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)