Make ticky work, at least partly, on 64-bit machines
[ghc-hetmet.git] / compiler / typecheck / TcHsSyn.lhs
index 6e17466..3736184 100644 (file)
@@ -304,11 +304,12 @@ zonk_bind env (AbsBinds { abs_tvs = tyvars, abs_dicts = dicts,
        = zonkIdBndr env global                 `thenM` \ new_global ->
          mapM zonk_prag prags                  `thenM` \ new_prags -> 
          returnM (tyvars, new_global, zonkIdOcc env local, new_prags)
-    zonk_prag prag@(InlinePrag {})  = return prag
-    zonk_prag (SpecPrag expr ty ds inl) = do { expr' <- zonkExpr env expr 
-                                            ; ty'   <- zonkTcTypeToType env ty
-                                            ; let ds' = zonkIdOccs env ds
-                                            ; return (SpecPrag expr' ty' ds' inl) }
+    zonk_prag prag@(L _ (InlinePrag {}))  = return prag
+    zonk_prag (L loc (SpecPrag expr ty ds inl))
+       = do { expr' <- zonkExpr env expr 
+            ; ty'   <- zonkTcTypeToType env ty
+            ; let ds' = zonkIdOccs env ds
+            ; return (L loc (SpecPrag expr' ty' ds' inl)) }
 \end{code}
 
 %************************************************************************
@@ -489,6 +490,10 @@ zonkExpr env (HsSCC lbl expr)
   = zonkLExpr env expr `thenM` \ new_expr ->
     returnM (HsSCC lbl new_expr)
 
+zonkExpr env (HsTickPragma info expr)
+  = zonkLExpr env expr `thenM` \ new_expr ->
+    returnM (HsTickPragma info new_expr)
+
 -- hdaume: core annotations
 zonkExpr env (HsCoreAnn lbl expr)
   = zonkLExpr env expr   `thenM` \ new_expr ->
@@ -560,6 +565,8 @@ zonkOverLit env (HsIntegral i e)
   = do { e' <- zonkExpr env e; return (HsIntegral i e') }
 zonkOverLit env (HsFractional r e)
   = do { e' <- zonkExpr env e; return (HsFractional r e') }
+zonkOverLit env (HsIsString s e)
+  = do { e' <- zonkExpr env e; return (HsIsString s e') }
 
 -------------------------------------------------------------------------
 zonkArithSeq :: ZonkEnv -> ArithSeqInfo TcId -> TcM (ArithSeqInfo Id)
@@ -641,8 +648,8 @@ zonkStmt env (BindStmt pat expr bind_op fail_op)
 -------------------------------------------------------------------------
 zonkRbinds :: ZonkEnv -> HsRecordBinds TcId -> TcM (HsRecordBinds Id)
 
-zonkRbinds env rbinds
-  = mappM zonk_rbind rbinds
+zonkRbinds env (HsRecordBinds rbinds)
+  = mappM zonk_rbind rbinds >>= return . HsRecordBinds
   where
     zonk_rbind (field, expr)
       = zonkLExpr env expr     `thenM` \ new_expr ->