Skip to content

Be pickier about unsaturated synonyms in :kind

Ryan Scott requested to merge RyanGlScott/ghc:wip/T16013 into master

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: #16013 (closed)

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

Merge request reports