add -fsimpleopt-before-flatten
[ghc-hetmet.git] / compiler / coreSyn / ExternalCore.lhs
index d3b6e3a..07a1dfb 100644 (file)
@@ -10,15 +10,12 @@ data Module
 
 data Tdef 
   = Data (Qual Tcon) [Tbind] [Cdef]
-  | Newtype (Qual Tcon) [Tbind] Axiom (Maybe Ty)
+  | Newtype (Qual Tcon) (Qual Tcon) [Tbind] Ty
 
 data Cdef 
   = Constr (Qual Dcon) [Tbind] [Ty]
   | GadtConstr (Qual Dcon) Ty
 
--- Newtype coercion
-type Axiom = (Qual Tcon, [Tbind], Kind)
-
 data Vdefg 
   = Rec [Vdef]
   | Nonrec Vdef
@@ -59,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