Fix #15236 by removing parentheses from funTyConName
authorRyan Scott <ryan.gl.scott@gmail.com>
Thu, 7 Jun 2018 17:30:44 +0000 (13:30 -0400)
committerBen Gamari <ben@smart-cactus.org>
Thu, 7 Jun 2018 22:06:30 +0000 (18:06 -0400)
commit3397396a385ef9f493cf1e20894e88d21dfec48d
tree66fe52660bf82b6485b12d2456728d4527662616
parent5926b6ed0dcc86f8fd6038fdcc5e2ba2856f40ce
Fix #15236 by removing parentheses from funTyConName

Currently, `funTyConName` is defined as:

```lang=haskell
funTyConName = mkPrimTyConName (fsLit "(->)") funTyConKey funTyCon
```

What's strange about this definition is that there are extraneous
parentheses around `->`, which is quite unlike every other infix
`Name`. As a result, the `:info (->)` output is totally garbled (see
Trac #15236).

It's quite straightforward to fix that particular bug by removing the
extraneous parentheses. However, it turns out that this makes some
test output involving `Show` instances for `TypeRep` look less
appealing, since `->` is no longer surrounded with parentheses when
applied prefix. But neither were any /other/ infix type constructors!
The right fix there was to change `showTypeable` to put parentheses
around prefix applications of infix tycons.

Test Plan: ./validate

Reviewers: bgamari, hvr

Reviewed By: bgamari

Subscribers: rwbarton, thomie, carter

GHC Trac Issues: #15236

Differential Revision: https://phabricator.haskell.org/D4799
compiler/prelude/TysPrim.hs
libraries/base/Data/Typeable/Internal.hs
testsuite/tests/ghci/scripts/T8535.stdout
testsuite/tests/ghci/scripts/ghci020.stdout
testsuite/tests/ghci/should_run/T10145.stdout
testsuite/tests/typecheck/should_run/TypeOf.stdout