
#10027: Importing constructor of associated data type fails -------------------------------------+------------------------------------- Reporter: lspitzner | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.8.4 Keywords: | Operating System: Unknown/Multiple constructor import associated | Type of failure: None/Unknown data type | Blocked By: Architecture: | Related Tickets: Unknown/Multiple | Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- I will base my description on the code you find when searching for "instance PersistEntity" on http://www.yesodweb.com/book/persistent. In summary, the code looks like {{{#!hs instance PersistEntity Person where ... data EntityField Person typ where PersonId :: EntityField Person PersonId PersonName :: EntityField Person String PersonAge :: EntityField Person Int ... }}} This code is generated from TH (see above). I have not tested if it matters that it is generated. A first step could be to test if manually replacing the TH part yields different results. The problem is: When i add this code in one module, do ''not'' create an export list for that module, and try to import the constructors explicitly (i.e. with a list) in a different module, it does not work. I read and tried to follow the description on https://wiki.haskell.org/GHC/Type_families, chapter 4.3. == Testcase 1 == (not really expected to work; still intersting error message) {{{#!hs import MyModuleContainingInstancePerson ( PersonId ) }}} ghc says {{{ ‘PersonId’ is a data constructor of ‘EntityField’ To import it use ‘import’ MyModuleContainingInstancePerson( EntityField( VersionVersion ) ) or ‘import’ MyModuleContainingInstancePerson( EntityField(..) ) }}} == Testcase 2 == (no export list in {{{MyModuleContainingInstancePerson}}}) {{{#!hs import MyModuleContainingInstancePerson ( EntityField(..) ) }}} ghc says {{{ Module ‘MyModuleContainingInstancePerson’ does not export ‘EntityField(..)’ }}} == Testcase 3 == But ''when i do provide'' an export list in {{{MyModuleContainingInstancePerson}}}, like {{{#!hs module MyModuleContainingInstancePerson ( Person(..), EntityField(..) ) where .. }}} Testcase 2 suddenly works. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10027 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler