[GHC] #10493: Inaccessible code might be accessible with newtypes and Coercible
GHC
ghc-devs at haskell.org
Fri Jun 5 22:19:15 UTC 2015
#10493: Inaccessible code might be accessible with newtypes and Coercible
-------------------------------------+-------------------------------------
Reporter: goldfire | Owner: goldfire
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by simonpj):
That's the right place. Currently we have
{{{
-- Fail straight away for better error messages
-- See Note [Use canEqFailure in canDecomposableTyConApp]
| isDataFamilyTyCon tc1 || isDataFamilyTyCon tc2
= canEqFailure ev eq_rel ty1 ty2
| otherwise
= canEqHardFailure ev eq_rel ty1 ty2
}}}
I think you are proposing
{{{
| eq_rel == ReprEq && not (isDistinctTyCon tc1 && isDictinctTyCon tc2)
= canEqFailure ev eq_rel ty1 ty2
| otherwise
= canEqHardFailure ev eq_rel ty1 ty2
}}}
That looks right, given the comment on `isDistinctTyCon`:
{{{
-- | 'isDistinctTyCon' is true of 'TyCon's that are equal only to
-- themselves, even via coercions (except for unsafeCoerce).
-- This excludes newtypes, type functions, type synonyms.
-- It relates directly to the FC consistency story:
-- If the axioms are consistent,
-- and co : S tys ~ T tys, and S,T are "distinct" TyCons,
-- then S=T.
}}}
Tihs comment is vague about roles. If we have a poof co :: S ~r T, and S
and T are "distinct" then S=T. But at what role is 'r'? It would be
helpful to clarify this comment in role vocabulary.
Similarly the comment `Note [Pruning dead case alternatives]` in
`Unify.hs` needs reviewing in the role world. `Unify.typesCantMatch` is
basically checking for apartness; which is also implemented somehwere
else. Can we combine?
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10493#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list