diff options
| author | Joey Hess <joeyh@joeyh.name> | 2016-05-21 13:34:39 -0400 |
|---|---|---|
| committer | Joey Hess <joeyh@joeyh.name> | 2016-05-21 13:34:39 -0400 |
| commit | 127ebb05b4b5d4138aef017b1d0d87dd8680262b (patch) | |
| tree | c50e89ebd5d6b29756fe7010dbde3a379b965499 /doc/todo/use_ghc_8.0_custom_compile_errors.mdwn | |
| parent | d930b1ca301e146570c3e1f497048f18e8472b3b (diff) | |
todo
Diffstat (limited to 'doc/todo/use_ghc_8.0_custom_compile_errors.mdwn')
| -rw-r--r-- | doc/todo/use_ghc_8.0_custom_compile_errors.mdwn | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/doc/todo/use_ghc_8.0_custom_compile_errors.mdwn b/doc/todo/use_ghc_8.0_custom_compile_errors.mdwn new file mode 100644 index 00000000..7eed443a --- /dev/null +++ b/doc/todo/use_ghc_8.0_custom_compile_errors.mdwn @@ -0,0 +1,27 @@ +<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. + +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. + +Custom errors need a type class to be used. So, could do something like this: + + class NeedsProperty a where + withProperty :: (Property metatype -> b) -> b + + instance NeedsProperty (Property metatype) where withProperty = id + + instance TypeError (Text "Use setupRevertableProperty ...") + => NeedsProperty RevertableProperty where + withProperty = error "unreachable" + +(While propellor needs to be buildable with older versions of ghc, +the `instance TypeError` can just be wrapped in an ifdef to make it only be +used by the new ghc.) + +[[!tag user/joey]] |
