Fix scoped type variables for expression type signatures
[ghc-hetmet.git] / compiler / rename / RnExpr.lhs
index 049123e..2df8e95 100644 (file)
@@ -248,9 +248,10 @@ rnExpr (RecordUpd expr rbinds _ _)
             fvExpr `plusFV` fvRbinds)
 
 rnExpr (ExprWithTySig expr pty)
             fvExpr `plusFV` fvRbinds)
 
 rnExpr (ExprWithTySig expr pty)
-  = rnLExpr expr               `thenM` \ (expr', fvExpr) ->
-    rnHsTypeFVs doc pty                `thenM` \ (pty', fvTy) ->
-    returnM (ExprWithTySig expr' pty', fvExpr `plusFV` fvTy)
+  = do { (pty', fvTy) <- rnHsTypeFVs doc pty
+       ; (expr', fvExpr) <- bindSigTyVarsFV (hsExplicitTvs pty') $
+                            rnLExpr expr
+       ; return (ExprWithTySig expr' pty', fvExpr `plusFV` fvTy) }
   where 
     doc = text "In an expression type signature"
 
   where 
     doc = text "In an expression type signature"