summaryrefslogtreecommitdiff
path: root/compiler/iface/IfaceType.hs
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2018-12-19 19:17:58 +0100
committerKrzysztof Gogolewski <krz.gogolewski@gmail.com>2018-12-19 20:57:06 +0100
commit9d9e35574a92773d872efd58a67339a9e054a9f1 (patch)
treef5446c48c7096bdb88561670b3175dd03fd65a18 /compiler/iface/IfaceType.hs
parentd555d4beb457f485aa122d118903f6f926f054f8 (diff)
downloadhaskell-9d9e35574a92773d872efd58a67339a9e054a9f1.tar.gz
Fix #16030 by refactoring IfaceSyn's treatment of GADT constructors
Summary: GHCi's `:info` command was pretty-printined GADT constructors suboptimally in the following ways: 1. Sometimes, fields were parenthesized when they did not need it, e.g., ```lang=haskell data Foo a where MkFoo :: (Maybe a) -> Foo a ``` I fixed this by refactoring some code in `pprIfaceConDecl` to be a little smarter with respect to GADT syntax. See `pprFieldArgTy` and `pprArgTy`. 2. With `-fprint-explicit-kinds` enabled, there would be times when specified arguments would be printed without a leading `@` in GADT return types, e.g., ```lang=haskell data Bar @k (a :: k) where MkBar :: Bar k a ``` It turns out that `ppr_tc_app`, the function which pretty-prints these return types, was not using the proper machinery to print out the arguments, which caused the visibilities to be forgotten entirely. I refactored `ppr_tc_app` to do this correctly. Test Plan: make test TEST=T16030 Reviewers: goldfire, bgamari, simonpj Reviewed By: simonpj Subscribers: simonpj, rwbarton, carter GHC Trac Issues: #16030 Differential Revision: https://phabricator.haskell.org/D5440
Diffstat (limited to 'compiler/iface/IfaceType.hs')
-rw-r--r--compiler/iface/IfaceType.hs2
1 files changed, 1 insertions, 1 deletions
diff --git a/compiler/iface/IfaceType.hs b/compiler/iface/IfaceType.hs
index c92c5d00f5..ebbc68755b 100644
--- a/compiler/iface/IfaceType.hs
+++ b/compiler/iface/IfaceType.hs
@@ -24,7 +24,7 @@ module IfaceType (
IfaceForAllBndr, ArgFlag(..), ShowForAllFlag(..),
mkIfaceForAllTvBndr,
- ifForAllBndrVar, ifForAllBndrName,
+ ifForAllBndrVar, ifForAllBndrName, ifaceBndrName,
ifTyConBinderVar, ifTyConBinderName,
-- Equality testing