
#15648: Core Lint error with source-level unboxed equality -------------------------------------+------------------------------------- Reporter: RyanGlScott | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.8.1 Component: Compiler | Version: 8.4.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Compile-time | Unknown/Multiple crash or panic | Test Case: Blocked By: | Blocking: Related Tickets: #15209 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): Richard asks why this typechecks: {{{ legitToJank :: LegitEquality a b -> JankyEquality a b legitToJank Legit = Jank }}} given that {{{ Jank :: $ueqT a b -> JankyEquality a b }}} Turns it it's because `tcSplitSigmaTy` ultimately uses `isPredTy` to decide which the invisible arguments are. And `isPredTy` has a special case to return `True` for `t1 ~# t2` and `t1 ~R# t2`. I'm not sure of the consequences of making `isPredTy` return `False` for `t1 ~# t2`. (E.g. it is used in `isEvVar`.) I'm a bit confused about what the Right Thing to do is. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15648#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler