
Hi, I am stuck fixing issue #9582 https://ghc.haskell.org/trac/ghc/ticket/9582 I need to test whether one type is a subtype of another and throw a custom error if this is not the case. I tried (errMsgs, result) <- tryTcErrs $ tcSubType ctOrigin userTypeCtxt local_meth_ty sig_ty case result of Just _coercion -> return () Nothing -> badInstSigErr sel_name local_meth_ty However, it does not seem to do what I expect. It acts as if I had not tried to catch the error, it acts as just tcSubType ctOrigin userTypeCtxt local_meth_ty sig_ty My hypothetical explanations: 1. 'tryTcErrs' is not the correct function to catch errors in the type checker. Or, 2. 'tcSubType' does not generate errors, just postponed constraints, which are checked later in a clean-up phase. Thus, I do not get an error now I could handle, but the error is generated later during the constraint solving phase, where I do not have a handler in place. In this case, I would need something like Agda's noConstraints, tryTcErrs $ noConstraints $ tcSubType... which forces 'tcSubType' to check without generating new unification constraints. Any advice how to do is or where to continue searching? Thanks, Andreas -- Andreas Abel <>< Du bist der geliebte Mensch. Department of Computer Science and Engineering Chalmers and Gothenburg University, Sweden andreas.abel@gu.se http://www2.tcs.ifi.lmu.de/~abel/