Fix bad interaction between operators and higher-rank types
Fixes Source bug #1200592 [GHC fails to pass dictionary in a rank-2 situation]
Merge to STABLE
tcArg op (arg2, arg2_ty, 2) `thenM` \ arg2' ->
addErrCtxt (exprCtxt in_expr) $
tcSubExp res_ty op_res_ty `thenM` \ co_fn ->
tcArg op (arg2, arg2_ty, 2) `thenM` \ arg2' ->
addErrCtxt (exprCtxt in_expr) $
tcSubExp res_ty op_res_ty `thenM` \ co_fn ->
- returnM (OpApp arg1' op' fix arg2')
+ returnM (co_fn <$> OpApp arg1' op' fix arg2')