X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FExternalCore.lhs;h=07a1dfbd8ee1b8bcc7f48a41d2be7ba071425d1d;hb=14a496fd0b3aa821b69eb02736d5f41086576761;hp=44f4e8c76662620e4d215bfd79f510b8a2dc6ccb;hpb=7fc749a43b4b6b85d234fa95d4928648259584f4;p=ghc-hetmet.git diff --git a/compiler/coreSyn/ExternalCore.lhs b/compiler/coreSyn/ExternalCore.lhs index 44f4e8c..07a1dfb 100644 --- a/compiler/coreSyn/ExternalCore.lhs +++ b/compiler/coreSyn/ExternalCore.lhs @@ -2,13 +2,6 @@ % (c) The University of Glasgow 2001-2006 % \begin{code} -{-# OPTIONS -w #-} --- The above warning supression flag is a temporary kludge. --- While working on this module you are encouraged to remove it and fix --- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings --- for details - module ExternalCore where @@ -17,17 +10,19 @@ data Module data Tdef = Data (Qual Tcon) [Tbind] [Cdef] - | Newtype (Qual Tcon) [Tbind] (Maybe Ty) + | Newtype (Qual Tcon) (Qual Tcon) [Tbind] Ty data Cdef - = Constr Dcon [Tbind] [Ty] - | GadtConstr Dcon Ty + = Constr (Qual Dcon) [Tbind] [Ty] + | GadtConstr (Qual Dcon) Ty data Vdefg = Rec [Vdef] | Nonrec Vdef -type Vdef = (Bool,Var,Ty,Exp) -- Top level bindings are unqualified now +-- Top-level bindings are qualified, so that the printer doesn't have to pass +-- around the module name. +type Vdef = (Bool,Qual Var,Ty,Exp) data Exp = Var (Qual Var) @@ -61,6 +56,16 @@ data Ty | Tcon (Qual Tcon) | Tapp Ty Ty | Tforall Tbind Ty +-- We distinguish primitive coercions +-- (represented in GHC by wired-in names), because +-- External Core treats them specially, so we have +-- to print them out with special syntax. + | TransCoercion Ty Ty + | SymCoercion Ty + | UnsafeCoercion Ty Ty + | InstCoercion Ty Ty + | LeftCoercion Ty + | RightCoercion Ty data Kind = Klifted @@ -87,7 +92,10 @@ type Qual t = (Mname,t) type Id = String -primMname = "base:GHC.Prim" +primMname :: Mname +-- For truly horrible reasons, this must be z-encoded. +-- With any hope, the z-encoding will die soon. +primMname = "ghczmprim:GHCziPrim" tcArrow :: Qual Tcon tcArrow = (primMname, "(->)")