#3901: Panic from combining generalized list comprehensions and record wildcards
-------------------------------+--------------------------------------------
    Reporter:  amthrax         |       Owner:                    
        Type:  bug             |      Status:  new               
    Priority:  normal          |   Component:  Compiler          
     Version:  6.12.1          |    Keywords:                    
          Os:  Linux           |    Testcase:                    
Architecture:  x86_64 (amd64)  |     Failure:  Compile-time crash
-------------------------------+--------------------------------------------
 Combining record wild cards with generalized list comprehension grouping
 causes the type-checker to mis-infer the type of the list comprehension,
 potentially leading to a panic.  For example

 {{{
 data Rec = Rec {a :: Int} deriving (Show)

 recs :: [[Int]]
 recs = [a | Rec {..} <- [Rec 1], then group by a]
 }}}

 results in a type error, because GHC thinks recs has type [Int].  On the
 other hand,

 {{{
 recs :: [[Int]]
 recs = [a | Rec {a=a} <- [Rec 1], then group by a]
 }}}

 compiles, correctly.

 If the type annotation is omitted from the first example, GHC panics with

 {{{
 ghc: panic! (the 'impossible' happened)
   (GHC version 6.12.1 for x86_64-unknown-linux):
         expectJust rnStmt
 }}}

 I've attached a test file that demonstrates the bug.

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/3901>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to