
#15149: Identical distinct type family fields miscompiled -------------------------------------+------------------------------------- Reporter: NeilMitchell | Owner: adamgundry Type: bug | Status: new Priority: normal | Milestone: 8.6.1 Component: Compiler | Version: 8.4.2 Resolution: | Keywords: ORF Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: #14747 | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by adamgundry): I think I've come across a simpler way to fix this and #14747. At the moment, `rnHsRecFields` goes to some trouble to figure out the parent type constructor of the data constructor (in `find_tycon`) and then does field name lookup using the parent type constructor. But we already have `lookupConstructorFields` which lets us directly find out the `FieldLabel`s of a data constructor! (This is used for expanding dot-dot patterns.) So why don't we just use `lookupConstructorFields` and search amongst them for the right one? We'd need to be a bit careful to still check the name is in scope (with the right module qualifier, if any), but that should be simple if we know the unambiguous selector name already. Moving field label resolution to the typechecker still might be worth doing, because it should get rid of quite a bit of duplication. But it's not a small task (e.g. because of dot-dot patterns) so I think it's worth pursuing the small fix first. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/15149#comment:9 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler