
#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 goldfire): I worry a malicious user of TH might get around the `checkValidType` check. Why do we need * If `x :: t1 ~# t2`, then `x` is a `CoVar` ? We clearly need the other direction of implication (that all `CoVar`s have coercion types), but I don't see the harm in allowing non-`CoVar`s to have coercion types. They'd be useless, but also harmless, I think. I wonder if there is just some code that looks at an `Id`'s type to determine whether it's a coercion variable instead of checking `isCoVar`. This might be from the fact that `CoVar`'s distinguished nature in `IdDetails` is a relatively new innovation. It used to be that looking at the type was the only way to tell coercion variables from others. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15648#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler