Pattern matching duplicated record fields
GHC panic during compiling pattern matching with duplicated record fields. The following is a short example.
Main module:
module Lib
( someFunc
) where
import F1
import qualified F2
r :: F2.T2
r = F2.T2 {
F2.foo = "ok"
}
someFunc :: IO ()
someFunc = case r of
F2.T2{ foo = a } -> putStrLn a
The first submodule:
module F1
( T1(..)
) where
newtype T1 = T1 {
foo :: String
}
The second submodule:
module F2
( T2(..)
) where
newtype T2 = T2 {
foo :: String
}
GHC compiles the modules successfully if uses DuplicateRecordFields.
The modules may be not correct without DuplicateRecordFields. But GHC should show an error message other than panic.
Trac metadata
Trac field | Value |
---|---|
Version | 8.0.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |