add -fsimpleopt-before-flatten
[ghc-hetmet.git] / compiler / coreSyn / ExternalCore.lhs
index 86a0d03..07a1dfb 100644 (file)
@@ -10,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)
@@ -54,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
@@ -83,7 +95,7 @@ type Id = String
 primMname :: Mname
 -- For truly horrible reasons, this must be z-encoded.
 -- With any hope, the z-encoding will die soon.
-primMname = "ghc-prim:GHCziPrim"
+primMname = "ghczmprim:GHCziPrim"
 
 tcArrow :: Qual Tcon
 tcArrow = (primMname, "(->)")