Hello,

I've updated the implementation to match the discussion from this morning.  The idea is that `TypeError msd` is a type-family that can never be reduced, similar to `Any`.  We don't do anything special in the constraint solver, however when printing errors, if we encounter any constraints of the form:
  * TypeError msg
  * TypeError msg ~ Something
  * Something ~ TypeError msg

Then we evaluate `msg` and use it as the error message.

This is fairly simple, and appears to work quite well.  The implementation is on branch `wip/custom-type-errors`  (https://github.com/ghc/ghc/tree/wip/custom-type-errors).


== Arc Difficulties Below ===

I tried to update the Phabricator patch but failed.  This is what I did:

1. arc diff master --update D1236 --head custom-type-errors

Exception
ERR-CONDUIT-CALL: API Method "differential.creatediff" does not define these parameters: 'arcanistProject'.
(Run with `--trace` for a full exception trace.)

2. I thought that maybe I need to update `arcanist`, so I pulled the latest version for git.

3. arc diff master --update D1236 --head custom-type-errors

Exception
Failed to load class or interface 'PhutilClassMapQuery': the class or interface 'PhutilClassMapQuery' is not defined in the library map for any loaded phutil library. If this symbol was recently added or moved, your library map may be out of date. You can rebuild the map by running 'arc liberate'. For more information, see: http://www.phabricator.com/docs/phabricator/article/libphutil_Libraries_User_Guide.html
(Run with `--trace` for a full exception trace.)

4. arc liberate

Exception
Failed to load class or interface 'PhutilClassMapQuery': the class or interface 'PhutilClassMapQuery' is not defined in the library map for any loaded phutil library. If this symbol was recently added or moved, your library map may be out of date. You can rebuild the map by running 'arc liberate'. For more information, see: http://www.phabricator.com/docs/phabricator/article/libphutil_Libraries_User_Guide.html
(Run with `--trace` for a full exception trace.)


Any advice on what I am doing wrong?

-Iavor




















On Wed, Oct 28, 2015 at 10:17 AM, Iavor Diatchki <iavor.diatchki@gmail.com> wrote:
I have also written my thoughts on the questions posed by Richard on the wiki page.




On Wed, Oct 28, 2015 at 7:07 AM, Richard Eisenberg <eir@cis.upenn.edu> wrote:

On Oct 28, 2015, at 10:02 AM, "Augustsson, Lennart" <Lennart.Augustsson@sc.com> wrote:

> I've put in my answers to your questions.

And I've responded.