Propositional equality for Datatype meta-information
Make constructor metadata parametrized (with intended parameter <- datatype)
Implement sameConstructor
get roles right and fix a FIXME
Actually parametrize the Constructor with the Datatype
Supply a reasonable name (should be derived from d_name tho)
Use 'd_name' as the name (should be derived from d_name tho)
Add default case (fixes -Werror)
Revert accidental wip/generics-propeq-conservative merge

This commit reverts the commits

   e12a6a8 Propositional equality for Datatype meta-information
   0a8e6fc Make constructor metadata parametrized (with intended parameter <- datatype)
   f097b77 Implement sameConstructor
   cc618e6 get roles right and fix a FIXME
   79c7125 Actually parametrize the Constructor with the Datatype
   7bd4bab Supply a reasonable name (should be derived from d_name tho)
   09fcd70 Use 'd_name' as the name (should be derived from d_name tho)
   4d90e44 Add default case (fixes -Werror)

and effectively resets ghc.git to the state it was at commit
8c79dcb4dc2c6b8b663fa0c2e61d40d0ac0e9996
Auto-derive a few manually coded Show instances

In `base`, the instances

  instance Show ()
  instance Show Bool
  instance Show Ordering
  instance Show a => Show (Maybe a)

where defined manually, even though we can leverage GHC's auto-deriver
which is perfectly capable by standalone derivation to avoid boiler-plate
code such as this.

Reviewed By: austin

Differential Revision: https://phabricator.haskell.org/D219
Increase -fcontext-stack=N default to 100

This addresses Trac #5395
Spelling error in flags.xml

Fixes Trac #9528
Use mapAccumL (refactoring only)

Fixes Trac #9529
Typo in comment in GHC.Generics

Fixes Trac #9523
Fix garbled comment wording

Thanks to Gabor for pointing this out
Define Util.leLength :: [a] -> [b] -> Bool
White space only
Clean up Coercible handling, and interaction of data families with newtypes

This patch fixes Trac #9580, in which the Coercible machinery succeeded
even though the relevant data constructor was not in scope.

As usual I got dragged into a raft of refactoring changes,
all for the better.

* Delete TcEvidence.coercionToTcCoercion (now unused)

* Move instNewTyConTF_maybe, instNewTyCon_maybe to FamInst,
  and rename them to tcInstNewTyConTF_maybe, tcInstNewTyCon
  (They both return TcCoercions.)

* tcInstNewTyConTF_maybe also gets more convenient type,
  which improves TcInteract.getCoercibleInst

* Define FamInst.tcLookupDataFamInst, and use it in TcDeriv,
  (as well as in tcInstNewTyConTF_maybe)

* Improve error report for Coercible errors, when data familes
  are involved  Another use of tcLookupDataFamInst

* In TcExpr.tcTagToEnum, use tcLookupDataFamInst to replace
  local hacky code

* Fix Coercion.instNewTyCon_maybe and Type.newTyConInstRhs to deal
  with eta-reduced newtypes, using
  (new) Type.unwrapNewTyConEtad_maybe and (new) Type.applyTysX

Some small refactoring of TcSMonad.matchFam.
Fixup overlooked `unless` occurence

This was broken in eae19112462fe77a3f1298bff12b409b205a581d
Define fixity for `Data.Foldable.{elem,notElem}`

This was probably just an oversight. With this change the fixity matches
that from `Data.List.{elem,notElem`}`.

Addresses #9610

Reviewed By: austin, ekmett

Differential Revision: https://phabricator.haskell.org/D227