
#12158: ghc: panic! (the 'impossible' happened) translateConPatVec: lookup -------------------------------------+------------------------------------- Reporter: wozgonon | Owner: gkaracha Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: | PatternMatchWarnings Operating System: Windows | Architecture: x86_64 Type of failure: Compile-time | (amd64) crash | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by gkaracha): Actually, the more I look at it, there is something wrong with the example: {{{ Prelude> data Stock = Stock {name :: String, ric :: String, price :: Float} Prelude> price Stock{name=name,ric=ric,price=price} = price }}} One should not even be allowed to define function `price` because it overlaps with the record field with the same name, so this must fail much earlier than desugaring (where the checker lives). Indeed, when I put the example in a file and load it I get: {{{ T12158.hs:7:1: error: Multiple declarations of ‘price’ Declared at: T12158.hs:5:53 T12158.hs:7:1 }}} which is correct. The only way to make this crash is if I type these two in ghci, which means that there is another bug (ghci accepting the program is the bug, it should fail during renaming). Additionally, the checker is perfectly happy with this: {{{ Prelude> data Stock = Stock {name :: String, ric :: String, price :: Float} Prelude> price2 Stock{name=name,ric=ric,price=price} = price }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12158#comment:7 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler