#13658: Assertion failure on HEAD: "optCoercion changed types!" -------------------------------------+------------------------------------- Reporter: bgamari | Owner: (none) Type: bug | Status: patch Priority: high | Milestone: 8.2.1 Component: Compiler | Version: 8.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D3545 Wiki Page: | -------------------------------------+------------------------------------- Comment (by Ben Gamari <ben@…>): In [changeset:"87ff5d4f0f812bad118600df0156f980b91191c5/ghc" 87ff5d4f/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="87ff5d4f0f812bad118600df0156f980b91191c5" OptCoercion: Ensure that TyConApps match in arity Previously OptCoercion would potentially change the type of UnivCo coercions of the shape, ``` co :: TyCon arg1 ... argN ~ TyCon arg1' ... argN' ``` where the arities of the left and right applications differ. In this case we would try to zip the two argument lists, meaning that one would get truncated. One would think this could never happen since it implies we are applying the same TyCon to two different numbers of arguments. However, it does arise in the case of applications of the `Any` tycon, which arises from the typechecker (in `Data.Typeable.Internal`) where we end up with an `UnsafeCo`, ``` co :: Any (Any -> Any) Any ~ Any (Any -> Any) ``` Test Plan: Validate Reviewers: simonpj, austin, goldfire Reviewed By: simonpj Subscribers: rwbarton, thomie GHC Trac Issues: #13658 Differential Revision: https://phabricator.haskell.org/D3545 }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13658#comment:8> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler