Merge remote-tracking branch 'origin/master' into type-nats
[ghc.git] / libraries / template-haskell / Language / Haskell / TH / Syntax.hs
index 61bbde8..ae444d7 100644 (file)
@@ -36,6 +36,7 @@ module Language.Haskell.TH.Syntax(
        -- * The algebraic data types
        -- $infix
        Dec(..), Exp(..), Con(..), Type(..), TyVarBndr(..), Kind(..),Cxt,
+        TyLit(..),
        Pred(..), Match(..),  Clause(..), Body(..), Guard(..), Stmt(..),
        Range(..), Lit(..), Pat(..), FieldExp, FieldPat, 
        Strict(..), Foreign(..), Callconv(..), Safety(..), Pragma(..),
@@ -988,12 +989,17 @@ data Type = ForallT [TyVarBndr] Cxt Type  -- ^ @forall <vars>. <ctxt> -> <type>@
           | ListT                         -- ^ @[]@
           | AppT Type Type                -- ^ @T a b@
           | SigT Type Kind                -- ^ @t :: k@
+          | LitT TyLit                    -- ^ @0,1,2, etc.@
       deriving( Show, Eq, Data, Typeable )
 
 data TyVarBndr = PlainTV  Name            -- ^ @a@
                | KindedTV Name Kind       -- ^ @(a :: k)@
       deriving( Show, Eq, Data, Typeable )
 
+data TyLit = NumTyLit Integer
+           | StrTyLit String
+  deriving ( Show, Eq, Data, Typeable )
+
 data Kind = StarK                         -- ^ @'*'@
           | ArrowK Kind Kind              -- ^ @k1 -> k2@
       deriving( Show, Eq, Data, Typeable )