Fix #14125 by normalizing data family instances more aggressively
authorRyan Scott <ryan.gl.scott@gmail.com>
Tue, 22 Aug 2017 13:28:43 +0000 (09:28 -0400)
committerRyan Scott <ryan.gl.scott@gmail.com>
Tue, 22 Aug 2017 13:28:43 +0000 (09:28 -0400)
commit6982ee99fb97c252c3faf37faae34131fb66f67c
treef5e51de2aa47121e8c600c0e8875aa6214374873
parent34bd43d9c24207a1897aaa4ee6cb70592a3f7acc
Fix #14125 by normalizing data family instances more aggressively

Summary:
Commit 3540d1e1a23926ce0a8a6ae83a36f5f6b2497ccf inadvertently broke
the ability for newtype instances to be used as marshallable types in FFI
declarations. The reason is a bit silly: an extra check was added for type
synonyms with no type families on the RHS in `normalise_tc_app`, but this check
would only skip over type families, not //data// families, since the predicate
being used was `not . isTypeFamilyCon`.

The fix is simple: just use `not . isFamilyCon` instead so that data families
are also skipped by this check.

Test Plan: make test TEST=T14125

Reviewers: goldfire, simonpj, austin, bgamari

Reviewed By: simonpj

Subscribers: rwbarton, thomie

GHC Trac Issues: #14125

Differential Revision: https://phabricator.haskell.org/D3865
compiler/types/FamInstEnv.hs
testsuite/tests/ffi/should_compile/T14125.hs [new file with mode: 0644]
testsuite/tests/ffi/should_compile/all.T
testsuite/tests/ghci/should_run/T14125a.script [new file with mode: 0644]
testsuite/tests/ghci/should_run/T14125a.stdout [new file with mode: 0644]
testsuite/tests/ghci/should_run/all.T