RFC: Remove -fwarn-unticked-promoted-constructors from -Wall

Richard Eisenberg eir at cis.upenn.edu
Thu Dec 18 17:38:23 UTC 2014


For what it's worth, I don't have a strong feeling either way here.

Arguments in favor of keeping -fwarn-unticked-promoted-constructors in -Wall:
 1. It's weird having GHC look in one namespace (types) and then look in another (terms) only when the first one fails. In other scenarios, ambiguity is an error.

 2. If I have my way (https://ghc.haskell.org/trac/ghc/wiki/DependentHaskell), this problem will only get worse.

 3. Whenever presenting code involving promoted constructors, I put the tick marks in everywhere, as I think it makes the code easier to understand.

 4. There is an easy workaround:
> type Unbranched = 'Unbranched

Arguments against keeping -fwarn-unticked-promoted-constructors in -Wall:
 1,2. As Janek.

 3. If you've made a mistake around using a type where a promoted data constructor is meant, or vice versa, it's very likely you have an error in your code. This will lead to a perhaps-obscure, perhaps-confusing error message instead of a nice clean warning, which is suppressed when there are errors.


Adding this all up, I can't really decide which is best.

Richard


On Dec 18, 2014, at 12:26 PM, Jan Stolarek <jan.stolarek at p.lodz.pl> wrote:

> We recently got a new warning -fwarn-unticked-promoted-constructors (see #9778 and D534). This 
> warning is enabled with -Wall but I think that this is not a good idea. I strongly propose to 
> remove it with -Wall.
> 
> Rationale:
> 1. I feel that ticks add unnecessary noise:
> 
> prDictOfPReprInstTyCon :: Type -> CoAxiom 'Unbranched -> [Type] -> VM CoreExpr
> 
> To me it feels awkward to have Unbranched with a tick but CoreExpr without a tick (both are types 
> after all). Moreover, ticks also trip many syntax highlighters, which further degrades code 
> readability.
> 
> 2. I've been refactoring some of GHC code to use promoted types instead of empty data types (see 
> CoAxiom.BranchList). This would have been a fairly local change, except that I have to add ticks 
> in every place that mentiones promoted types. That's a Royal Pain and a "good" example how this 
> warning can get in people's way.
> 
> Janek
> 
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://www.haskell.org/mailman/listinfo/ghc-devs



More information about the ghc-devs mailing list