[GHC] #13644: overloaded name used in record pattern matching leads to panic! (the 'impossible' happened) in ghc
GHC
ghc-devs at haskell.org
Wed Sep 13 14:51:27 UTC 2017
#13644: overloaded name used in record pattern matching leads to panic! (the
'impossible' happened) in ghc
-------------------------------------+-------------------------------------
Reporter: pjljvdlaar | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone: 8.4.1
Component: Compiler | Version: 8.0.2
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Compile-time | Unknown/Multiple
crash or panic | Test Case:
Blocked By: | Blocking:
Related Tickets: #13840, #13973, | Differential Rev(s):
#14087 |
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by sighingnow):
Maybe we should throw a type error when pattern name mismatch, rather than
just panic.
Use the case from #13973 as an example,
{{{#!haskell
-- Record.hs
module Record (Record(..)) where
data Record = Record { field1 :: Int, field2 :: Int }
-- Test.hs
module Test (foo) where
import qualified Record as Rec
field2 :: ()
field2 = ()
foo :: Rec.Record -> Int
foo Rec.Record{field2 = field2} = field2
}}}
In function `translateConPatVec` (in `compiler/deSugar/Check.hs`, during
the desugar pass), we can't know whether the pattern label comes from the
record fields, or just another ordinary symbol.
When pattern name lookup (`lookup name zipped`) fails, **we could reach a
conclusion** that `name` must not be one of the record fields. Then the
compiler can throw an error like
{{{
Test.hs:11:16: error:
Record field not in scope: ‘field2’
Perhaps you meant one of these:
‘Rec.field1’ (imported from Record),
‘Rec.field2’ (imported from Record),
}}}
(Noticing that `Record field not in scope` has point out that the missing
item is a record field label, rather than other ordinary variable, without
causing any confusion.)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/13644#comment:14>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list