Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : type-holes-branch

http://hackage.haskell.org/trac/ghc/changeset/d22ae0e52bda330249e96e320261315809a849a3

>---------------------------------------------------------------

commit d22ae0e52bda330249e96e320261315809a849a3
Author: Thijs Alkemade <[email protected]>
Date:   Wed Dec 21 18:02:09 2011 +0100

    Storing the TyVar was wrong, it has to store the type.

>---------------------------------------------------------------

 compiler/typecheck/TcExpr.lhs     |    8 ++++----
 compiler/typecheck/TcRnDriver.lhs |    5 +++--
 compiler/typecheck/TcRnTypes.lhs  |    2 +-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/compiler/typecheck/TcExpr.lhs b/compiler/typecheck/TcExpr.lhs
index def1d57..91926b6 100644
--- a/compiler/typecheck/TcExpr.lhs
+++ b/compiler/typecheck/TcExpr.lhs
@@ -223,12 +223,12 @@ tcExpr (HsType ty) _
 tcExpr HsHole res_ty
   = do { liftIO $ putStrLn ("tcExpr.HsHole: " ++ (showSDoc $ ppr $ res_ty)) ;
          printTy res_ty ;
+         (g, l) <- getEnvs ;
+         holes <- readTcRef $ tcl_holes l ;
+         writeTcRef (tcl_holes l) (res_ty : holes) ;
          return HsHole }
        where printTy (TyVarTy ty) = let (MetaTv _ io) = tcTyVarDetails ty in 
-                                        do (g, l) <- getEnvs ;
-                                           holes <- readTcRef $ tcl_holes l ;
-                                           writeTcRef (tcl_holes l) (ty : 
holes) ;
-                                           meta <- readTcRef io
+                                        do meta <- readTcRef io
                                            liftIO $ putStrLn ("tcExpr.HsHole: 
" ++ (showSDoc $ ppr $ meta))
              printTy (ForAllTy _ _) = liftIO $ putStrLn ("tcExpr.HsHole: 
ForAllTy")
              printTy (PredTy _) = liftIO $ putStrLn ("tcExpr.HsHole: ForAllTy")
diff --git a/compiler/typecheck/TcRnDriver.lhs 
b/compiler/typecheck/TcRnDriver.lhs
index 2003ff6..200810d 100644
--- a/compiler/typecheck/TcRnDriver.lhs
+++ b/compiler/typecheck/TcRnDriver.lhs
@@ -1430,8 +1430,9 @@ tcRnExpr hsc_env ictxt rdr_expr
 
     (g, l) <- getEnvs ;
     holes <- readTcRef $ tcl_holes l ;
-    zonked_holes <- zonkTcTypes $ map (\ty -> mkForAllTys qtvs (mkPiTypes 
dicts (TyVarTy ty))) $ holes ;
-    liftIO $ putStrLn ("tcRnExpr2: " ++ (showSDoc $ ppr $ zip holes (map 
(tidyType emptyTidyEnv) zonked_holes))) ;
+    liftIO $ putStrLn ("tcRnExpr1.5: " ++ (showSDoc $ ppr $ holes)) ;
+    zonked_holes <- zonkTcTypes $ map (\ty -> mkForAllTys qtvs (mkPiTypes 
dicts ty)) $ holes ;
+    liftIO $ putStrLn ("tcRnExpr2: " ++ (showSDoc $ ppr $ map (tidyType 
emptyTidyEnv) zonked_holes)) ;
     liftIO $ putStrLn ("tcRnExpr3: " ++ (showSDoc $ ppr $ dicts)) ;
     let { all_expr_ty = mkForAllTys qtvs (mkPiTypes dicts res_ty) } ;
     zonkTcType all_expr_ty
diff --git a/compiler/typecheck/TcRnTypes.lhs b/compiler/typecheck/TcRnTypes.lhs
index 21536bb..2ef124e 100644
--- a/compiler/typecheck/TcRnTypes.lhs
+++ b/compiler/typecheck/TcRnTypes.lhs
@@ -440,7 +440,7 @@ data TcLclEnv               -- Changes as we move inside an 
expression
        tcl_untch :: Unique,        -- Any TcMetaTyVar with 
                                    --     unique >= tcl_untch is touchable
                                    --     unique <  tcl_untch is untouchable
-       tcl_holes :: TcRef [TyVar]
+       tcl_holes :: TcRef [Type]
     }
 
 type TcTypeEnv = NameEnv TcTyThing



_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to