
#9204: Conflicting definition in hs-boot file -------------------------------------+------------------------------------- Reporter: Feuerbach | Owner: Type: bug | Status: new Priority: low | Milestone: 7.12.1 Component: Documentation | Version: 7.8.2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: None/Unknown | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | roles/should_fail/T9204 | Blocking: | Differential Revisions: Phab:D458 -------------------------------------+------------------------------------- Changes (by goldfire): * owner: goldfire => * priority: normal => low * status: closed => new * resolution: fixed => * milestone: => 7.12.1 Comment: Yes, the suggestion in comment:8 is reasonable: Use `phantom` as the default role in hs-boot files when the definition is supplied. Even today, GHC does do role inference in hs-boot files -- it just uses a different default. But there is no reason to change the default if a definition is supplied. Thanks for the suggestion. However, because this is a user-facing change, it's not appropriate (in my opinion) to make the change for 7.10. And, it's just barely possible that this will break code. The following compiles today: A.hs-boot: {{{ module A where data P a = P }}} A.hs: {{{ module A where type role P representational data P a = P }}} Under the proposed change, this example would fail due to the missing role annotation in the hs-boot file. That said, I'm still in favor of the change, just documenting what would break. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9204#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler