https://downloads.haskell.org/~ghc/8.0.1/docs/html/users_guide/glasgow_exts.html#custom-errors
This could be used in propellor to improve compile time errors.
For example, a RevertableProperty is sometimes used where only a regular
Property is accepted. In this case, the error could suggest that the user
apply setupRevertableProperty
to extract the setup side of the RevertableProperty.
I tried this, it didn't seem worth the complication however. --Joey
And, when a Property HasInfo is provided to ensureProperty, propellor could explain, in the compile error, why it can't let the user do that.
Done this and also used custom errors when properties' types don't let them be combined. --Joey
The new type-errors library builds a lot of stuff on top of this. Its ability to detect "stuckness" seems like it may be able to catch the very long type errors that we sometimes see when using propellor, and whittle them down to a more useful error. --Joey
Actually I think the stuckness would not help with that, though it could help with other mistakes. In particular, forgetting to provide a parameter to a property constructor can lead to a massive error message that leaks type family stuff from MetaTypes, due to the type checker getting stuck. Detecting that and replacing it with a simpler error would be a big improvement. Such large error messages can make ghc use an excessive amount of memory. --Joey