
#10182: lookupIfaceGlobal crash with SOURCE import -------------------------------------+------------------------------------- Reporter: simonpj | Owner: ezyang Type: bug | Status: patch Priority: normal | Milestone: 7.12.1 Component: Compiler | Version: 7.8.4 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: | https://phabricator.haskell.org/D860 -------------------------------------+------------------------------------- Comment (by nomeata): With Edwards’s change to the test case to not do a self-SOURCE-import, but rather indirected through another module, we get: {{{ *** Core Lint errors : in result of Simplifier *** T8743.hs-boot:3:10: warning: [RHS of $fxToRowMaybe :: forall a_anp. ToRow (Maybe a_anp)] idArity 1 exceeds typeArity 0: $fxToRowMaybe }}} The error message is misleading: It occurs when compiling `T8743.hs` proper. The desugared code before optimization is fine, after it occurs. My guess is that still from compiling `T8740.hs-boot`, GHC has `ToRow` in its environment as an abstract data type, without the information that it is just a newtype around `a -> [()]`. This is used by the renamer when parsing `T8740.hs`, so `typeArity`, which looks at the `DataTypCon`, returns `0` instead of `1`. Rough guess: The renamer should use the `T8743.hs`’s definition of `ToRow`, even if a (less useful) definition is already known from a boot file. Edward, does this explanation help you hunt down the problem? I know little about the plumbing of the various environments and such. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10182#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler