[GHC] #14371: ghc: panic! when reloading file with code

GHC ghc-devs at haskell.org
Wed Oct 18 21:23:44 UTC 2017


#14371: ghc: panic! when reloading file with code
-------------------------------------+-------------------------------------
        Reporter:  xvrbka1           |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Description changed by xvrbka1:

Old description:

> Hello,
>
> I have no idea what causes it (maybe my mistake) so I probably will give
> you more code then necessaty. Sorry for that.
>  \\
> **I had working code:**
>
> {{{
> f :: [[Bool]] -> ([Bool], [[Bool]])
> f [] = ([True], g [])
> f (x:xs) = (g x, g xs)
>
> g :: [a] -> [a]
> g [] = []
> g x = x
>
> listITE :: [Bool] -> [a] -> [a] -> [a]
> listITE [] _ _ = []
> listITE _ _ [] = []
> listITE _ [] _ = []
> listITE (b:bs) (x:xs) (y:ys) = [(if b then x else y)] ++ listITE bs xs ys
> --zipWith (\x,y -> if  ) ;
>
> firstMatch :: (a -> a -> Bool) -> [a] -> a -> a
> firstMatch _ [] y = y
> firstMatch p (x:s) y =  if index >= (length (x:s)) then y  else (x:s) !!
> index
>                             where index = indexOf True (zipWith p (x:s)
> s)
>
> indexOf :: (Eq a) => a -> [a] -> Int
> indexOf _ [] = 10
> indexOf c (x:s) = if c==x then 0 else 1 + indexOf c s
> }}}
> that I could load, run and reload.
> \\
>
> **
> After I wrote this and tried to reload:**
> {{{
> countInversions :: (Ord a) => [a] -> Int
> countInversions [] = 0
> countInversions (x:s) = (countSame (True==) (map (x>) s)) +
> countInversions s
>
> countSame :: (Ord a) => (a -> Bool) [a] -> Int
> countSame _ [] = 0;
> countSame p (x:s) = (if p x then 1 else 0) + indexOf c s
>
> }}}
> \\
>
> **I get error:**\\
>
> ''ghc: panic! (the 'impossible' happened)
>   (GHC version 8.2.1 for x86_64-unknown-linux):
>         repSplitAppTys
>   a_a6Xb[sk:1]
>   Bool
>   []
>   Call stack:
>       CallStack (from HasCallStack):
>         prettyCurrentCallStack, called at
> compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
>         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
> ghc:Outputable
>         pprPanic, called at compiler/types/Type.hs:808:9 in ghc:Type''
> \\
> Now I cannot reaload or even load this file
> \\
>

> I hope I found u a bug :)
> \\
>

> Have a nice day

New description:

 Hello,

 I have no idea what causes it (maybe my mistake) so I probably will give
 you more code then necessaty. Sorry for that.
  \\
 **I had working code:**

 {{{
 f :: [[Bool]] -> ([Bool], [[Bool]])
 f [] = ([True], g [])
 f (x:xs) = (g x, g xs)

 g :: [a] -> [a]
 g [] = []
 g x = x

 listITE :: [Bool] -> [a] -> [a] -> [a]
 listITE [] _ _ = []
 listITE _ _ [] = []
 listITE _ [] _ = []
 listITE (b:bs) (x:xs) (y:ys) = [(if b then x else y)] ++ listITE bs xs ys
 --zipWith (\x,y -> if  ) ;

 firstMatch :: (a -> a -> Bool) -> [a] -> a -> a
 firstMatch _ [] y = y
 firstMatch p (x:s) y =  if index >= (length (x:s)) then y  else (x:s) !!
 index
                             where index = indexOf True (zipWith p (x:s) s)

 indexOf :: (Eq a) => a -> [a] -> Int
 indexOf _ [] = 10
 indexOf c (x:s) = if c==x then 0 else 1 + indexOf c s
 }}}
 that I could load, run and reload.
 \\

 **
 After I wrote this and tried to reload:**
 {{{
 countInversions :: (Ord a) => [a] -> Int
 countInversions [] = 0
 countInversions (x:s) = (countSame (True==) (map (x>) s)) +
 countInversions s

 countSame :: (Ord a) => (a -> Bool) [a] -> Int
 countSame _ [] = 0;
 countSame p (x:s) = (if p x then 1 else 0) + indexOf c s

 }}}
 \\

 **I get error:**\\

 ''ghc: panic! (the 'impossible' happened)
   (GHC version 8.2.1 for x86_64-unknown-linux):
         repSplitAppTys
   a_a6Xb[sk:1]
   Bool
   []
   Call stack:
       CallStack (from HasCallStack):
         prettyCurrentCallStack, called at
 compiler/utils/Outputable.hs:1133:58 in ghc:Outputable
         callStackDoc, called at compiler/utils/Outputable.hs:1137:37 in
 ghc:Outputable
         pprPanic, called at compiler/types/Type.hs:808:9 in ghc:Type''
 \\
 Now I cannot reaload or even load this file (but when I remove the added
 part, everything is OK)
 \\


 I hope I found u a bug :)
 \\


 Have a nice day

 ps. with my playing I discover that

 == **THIS GIVES THE ERROR** \\

 {{{

 countSame :: (Ord a) => (a -> Bool) [a] -> Int
 countSame _ [] = 0;
 countSame p (x:s) = (if p x then 1 else 0) + indexOf c s
 }}}

--

-- 
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14371#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list