Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • GHC GHC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 5,410
    • Issues 5,410
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 605
    • Merge requests 605
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Glasgow Haskell CompilerGlasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #18120
Closed
Open
Issue created Apr 30, 2020 by Ryan Scott@RyanGlScottMaintainer

ASSERTion failure when compiling generics-sop with devel2 HEAD

Attempting to compile generics-sop-0.5.1.0 with GHC HEAD (commit 014ef4a3) built with the devel2 flavour will cause an ASSERT to trip up. Here is a minimized version of the code:

{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE UndecidableSuperClasses #-}
module Bug where

import Data.Kind

type family
  AllF (c :: k -> Constraint) (xs :: [k]) :: Constraint where
  AllF _c '[]       = ()
  AllF  c (x ': xs) = (c x, All c xs)

class (AllF c xs, SListI xs) => All (c :: k -> Constraint) (xs :: [k]) where
instance All c '[] where
instance (c x, All c xs) => All c (x ': xs) where

class Top x
instance Top x

type SListI = All Top

class All SListI (Code a) => Generic (a :: Type) where
  type Code a :: [[Type]]

data T = MkT Int
instance Generic T where
  type Code T = '[ '[Int] ]
$ ~/Software/ghc2/inplace/bin/ghc-stage2 Bug.hs -O -fforce-recomp
[1 of 1] Compiling Bug              ( Bug.hs, Bug.o )
ghc-stage2: panic! (the 'impossible' happened)
  (GHC version 8.11.0.20200430:
        ASSERT failed!
  DFun: \ (@a_a1gv)
          (@(c_aue :: a_a1gv -> Constraint))
          (@(x_auf :: a_a1gv))
          (@(xs_aug :: [a_a1gv]))
          (v_B1 :: c_aue x_auf)
          (v_B2 :: All c_aue xs_aug) ->
    C:All TYPE: a_a1gv
          TYPE: c_aue
          TYPE: x_auf : xs_aug
          (v_B1, v_B2)
          `cast` (Sub (Sym (D:R:AllF[1]
                                <a_a1gv>_N <c_aue>_N <x_auf>_N <xs_aug>_N))
                  :: (c_aue x_auf, All c_aue xs_aug) ~R# AllF c_aue (x_auf : xs_aug))
          $cp2All_a1ii @a_a1gv @c_aue @x_auf @xs_aug v_B1 v_B2
  []
  $fAllac: @(*) @Top @Int @'[] ($fTopkx @(*) @Int)
  1
  Call stack:
      CallStack (from HasCallStack):
        callStackDoc, called at compiler/GHC/Utils/Outputable.hs:1229:37 in ghc:GHC.Utils.Outputable
        pprPanic, called at compiler/GHC/Utils/Outputable.hs:1299:5 in ghc:GHC.Utils.Outputable
        assertPprPanic, called at compiler/GHC/Core/Unfold.hs:184:109 in ghc:GHC.Core.Unfold
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking