Skip to content

GHC 8.6+ loops infinitely on an UndecidableInstances error message

This regression was introduced in commit e1b5a117 (Fix a nasty bug in piResultTys), which is present in the ghc-8.6 and master branches. To observe the issue, try compiling the following program:

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
-- {-# LANGUAGE UndecidableInstances #-}
module Bug where

type family Undefined :: k where {}

type family LetInterleave xs t ts is (a_ahkO :: [a]) (a_ahkP :: [[a]]) :: [[a]] where
  LetInterleave xs t ts is y z = Undefined y z

You'll get this far:

$ ~/Software/ghc4/inplace/bin/ghc-stage2 Bug.hs
[1 of 1] Compiling Bug              ( Bug.hs, Bug.o )

Bug.hs:11:3: error:
    • Variables ‘a, a’ occur more often
        in the type family application

Before GHC hangs. (I was unable to kill this with Ctrl+C; I had to resort to kill -9.)

Interestingly, the commit f8618a9b (Remove the type-checking knot.) does not appear to have an effect on this.

Trac metadata
Trac field Value
Version 8.5
Type Bug
TypeOfFailure OtherFailure
Priority highest
Resolution Unresolved
Component Compiler (Type checker)
Test case
Differential revisions
BlockedBy
Related
Blocking
CC simonpj
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information