[GHC] #14747: DisambiguateRecordFields fails for PatternSynonyms
GHC
ghc-devs at haskell.org
Wed Jan 31 21:57:50 UTC 2018
#14747: DisambiguateRecordFields fails for PatternSynonyms
-------------------------------------+-------------------------------------
Reporter: adamgundry | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
(Type checker) |
Keywords: | Operating System: Unknown/Multiple
PatternSynonyms |
Architecture: | Type of failure: GHC rejects
Unknown/Multiple | valid program
Test Case: | Blocked By:
Blocking: | Related Tickets: #11283
Differential Rev(s): | Wiki Page:
-------------------------------------+-------------------------------------
Consider:
{{{#!hs
{-# LANGUAGE PatternSynonyms #-}
module A where
pattern S{x} = [x]
}}}
{{{#!hs
{-# LANGUAGE PatternSynonyms, DisambiguateRecordFields #-}
module B where
import A
pattern T{x} = [x]
e = S { x = 42 }
}}}
Compiling module B fails with `Ambiguous occurrence ‘x’` in the definition
of `e`. In principle, `DisambiguateRecordFields` should select the field
belonging to the `S` "data constructor". However, the current
implementation of this works by identifying the parent type constructor,
which doesn't exist for a pattern synonym.
This continues to fail if `T` is replaced by a data type with a field `x`.
If `S` is replaced by a data type, however, it starts working.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14747>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list