Be pickier about unsaturated synonyms in :kind

Authored by RyanGlScott on Jan 8 2019, 6:37 AM.

Description

Be pickier about unsaturated synonyms in :kind

Summary:
We currently permit any and all uses of unsaturated type
synonyms and type families in GHCi's :kind command, which allows
strange interactions like this one:

> :set -XTypeFamilies -XPolyKinds
> type family Id (a :: k)
> type instance Id a = a
> type Foo x = Maybe
> :kind! Id Foo

This is probably a stretch too far, so this patch moves to disallow
unsaturated synonyms that aren't at the top level (we still want to
allow :kind Id, for instance). We do this by augmenting GhciCtxt
with an additional Bool field to indicate if we are at the
outermost level of the type being passed to :kind or not. See
Note [Unsaturated type synonyms in GHCi] in TcValidity for the
full story.

Test Plan: make test TEST=T16013

Reviewers: goldfire, bgamari

Reviewed By: goldfire

Subscribers: simonpj, goldfire, rwbarton, carter

GHC Trac Issues: Trac #16013

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

Details

Committed
RyanGlScottJan 8 2019, 6:37 AM
Reviewer
goldfire
Differential Revision
D5471: Be pickier about unsaturated synonyms in :kind
Parents
rGHC6b5ec08a4a64: Check that libs found by GCC aren't folders
Branches
Unknown
Tags
Unknown