- ; (expr', lie) <- escapeArrowScope (getLIE (tcMonoExpr expr e_ty))
- ; loc <- getInstLoc (SigOrigin ArrowSkol)
- ; inst_binds <- tcSimplifyCheck loc [w_tv] [] lie
-
- -- Check that the polymorphic variable hasn't been unified with anything
- -- and is not free in res_ty or the cmd_stk (i.e. t, t1..tn)
- ; checkSigTyVarsWrt (tyVarsOfTypes (res_ty:cmd_stk)) [w_tv]
+ ; (inst_binds, expr') <- checkConstraints ArrowSkol free_tvs [w_tv] [] $
+ escapeArrowScope (tcMonoExpr expr e_ty)