Skip to content

Core Lint error when compiling c2hs with GHC 9.2.5

Summary

c2hs-0.28.8 fails to compile with -dcore-lint

Steps to reproduce

$ cabal get c2hs-0.28.8
$ cat > cabal.project << EOF
packages: .
package c2hs
  ghc-options: -dcore-lint
EOF
$ cabal build
Click to expand
*** Core Lint errors : in result of Worker Wrapper binds ***
<no location info>: warning:
    Kinds don't match in type application:
    Type variable: a_11 :: *
    Arg type:
        (# State# RealWorld,
           (BaseState SwitchBoard, CState GBState,
            Either (String, String) [CHSFrag]) #) :: TYPE
                                                       ('TupleRep '[ 'TupleRep '[], LiftedRep])
    Linted Arg kind: TYPE ('TupleRep '[ 'TupleRep '[], LiftedRep])
    In the RHS of expandFrags_s13RN :: [CHSFrag]
                                       -> BaseState SwitchBoard
                                       -> (AttrC, GBState)
                                       -> State# RealWorld
                                       -> (# State# RealWorld,
                                             (BaseState SwitchBoard, (AttrC, GBState),
                                              Either (String, String) [CHSFrag]) #)
    In the body of lambda with binder x_aUn :: [CHSFrag]
    In the body of lambda with binder eta_X1q :: BaseState SwitchBoard
    In the body of lambda with binder eta_X1r :: (AttrC, GBState)
    In the body of lambda with binder eta_X1s :: State# RealWorld
    In the RHS of go1_s15xn :: [CHSFrag]
                               -> BaseState SwitchBoard
                               -> CState GBState
                               -> State# RealWorld
                               -> (# State# RealWorld,
                                     (BaseState SwitchBoard, CState GBState,
                                      Either (String, String) [[CHSFrag]]) #)
    In the body of lambda with binder ds_aWl :: [CHSFrag]
    In the body of lambda with binder eta_X1t :: BaseState SwitchBoard
    In the body of lambda with binder eta_X1u :: CState GBState
    In the body of lambda with binder eta_X1v :: State# RealWorld
    In a case alternative: (: y_aWo :: CHSFrag, ys_aWp :: [CHSFrag])
    In the body of letrec with binders $w$j_s15Sk :: State# RealWorld
                                                     -> BaseState SwitchBoard
                                                     -> (AttrC, GBState)
                                                     -> Either
                                                          (String, String)
                                                          ([[CHSFrag]] -> [[CHSFrag]])
                                                     -> (# State# RealWorld,
                                                           (BaseState SwitchBoard, CState GBState,
                                                            Either (String, String) [[CHSFrag]]) #)
    In the body of letrec with binders $j_s15xM :: State# RealWorld
                                                   -> (BaseState SwitchBoard, (AttrC, GBState),
                                                       Either
                                                         (String, String)
                                                         ([[CHSFrag]] -> [[CHSFrag]]))
                                                   -> (# State# RealWorld,
                                                         (BaseState SwitchBoard, CState GBState,
                                                          Either (String, String) [[CHSFrag]]) #)
    In a case alternative: (CHSHook h_aXVO :: CHSHook,
                                    pos_aXVP :: Position)
    In the body of lambda with binder w_s15Sv :: State# RealWorld
    In the body of lambda with binder ww_s15Sz :: BaseState SwitchBoard
    In the body of lambda with binder ww_s15SA :: (AttrC, GBState)
    In the body of lambda with binder ww_s15SB :: Either
                                                    (String, String) String
    In the body of letrec with binders w_s15Sw :: (BaseState
                                                     SwitchBoard,
                                                   (AttrC, GBState), Either (String, String) String)
    In the body of letrec with binders ipv_ifkD :: State# RealWorld
    In the body of letrec with binders ipv1_ifkE :: (BaseState
                                                       SwitchBoard,
                                                     (AttrC, GBState),
                                                     Either (String, String) String)
    In a case alternative: ((,,) bs'_ifkH :: BaseState SwitchBoard,
                                 gs'_ifkI :: (AttrC, GBState),
                                 res_ifkJ :: Either (String, String) String)
    In the body of lambda with binder w_s15Sl :: State# RealWorld
    In the body of lambda with binder ww_s15Sq :: BaseState SwitchBoard
    In the body of lambda with binder ww_s15Sr :: CState GBState
    In the body of lambda with binder ww_s15Ss :: Either
                                                    (String, String) [CHSFrag]
    In the body of letrec with binders w_s15Sm :: (BaseState
                                                     SwitchBoard,
                                                   CState GBState,
                                                   Either (String, String) [CHSFrag])
    Substitution: [TCvSubst
                     In scope: InScope {}
                     Type env: []
                     Co env: []]
<no location info>: warning:
    The type of this binder is unlifted: w_s15Sn
    Binder's type: (# State# RealWorld,
                      (BaseState SwitchBoard, CState GBState,
                       Either (String, String) [CHSFrag]) #)
    In the RHS of expandFrags_s13RN :: [CHSFrag]
                                       -> BaseState SwitchBoard
                                       -> (AttrC, GBState)
                                       -> State# RealWorld
                                       -> (# State# RealWorld,
                                             (BaseState SwitchBoard, (AttrC, GBState),
                                              Either (String, String) [CHSFrag]) #)
    In the body of lambda with binder x_aUn :: [CHSFrag]
    In the body of lambda with binder eta_X1q :: BaseState SwitchBoard
    In the body of lambda with binder eta_X1r :: (AttrC, GBState)
    In the body of lambda with binder eta_X1s :: State# RealWorld
    In the RHS of go1_s15xn :: [CHSFrag]
                               -> BaseState SwitchBoard
                               -> CState GBState
                               -> State# RealWorld
                               -> (# State# RealWorld,
                                     (BaseState SwitchBoard, CState GBState,
                                      Either (String, String) [[CHSFrag]]) #)
    In the body of lambda with binder ds_aWl :: [CHSFrag]
    In the body of lambda with binder eta_X1t :: BaseState SwitchBoard
    In the body of lambda with binder eta_X1u :: CState GBState
    In the body of lambda with binder eta_X1v :: State# RealWorld
    In a case alternative: (: y_aWo :: CHSFrag, ys_aWp :: [CHSFrag])
    In the body of letrec with binders $w$j_s15Sk :: State# RealWorld
                                                     -> BaseState SwitchBoard
                                                     -> (AttrC, GBState)
                                                     -> Either
                                                          (String, String)
                                                          ([[CHSFrag]] -> [[CHSFrag]])
                                                     -> (# State# RealWorld,
                                                           (BaseState SwitchBoard, CState GBState,
                                                            Either (String, String) [[CHSFrag]]) #)
    In the body of letrec with binders $j_s15xM :: State# RealWorld
                                                   -> (BaseState SwitchBoard, (AttrC, GBState),
                                                       Either
                                                         (String, String)
                                                         ([[CHSFrag]] -> [[CHSFrag]]))
                                                   -> (# State# RealWorld,
                                                         (BaseState SwitchBoard, CState GBState,
                                                          Either (String, String) [[CHSFrag]]) #)
    In a case alternative: (CHSHook h_aXVO :: CHSHook,
                                    pos_aXVP :: Position)
    In the body of lambda with binder w_s15Sv :: State# RealWorld
    In the body of lambda with binder ww_s15Sz :: BaseState SwitchBoard
    In the body of lambda with binder ww_s15SA :: (AttrC, GBState)
    In the body of lambda with binder ww_s15SB :: Either
                                                    (String, String) String
    In the body of letrec with binders w_s15Sw :: (BaseState
                                                     SwitchBoard,
                                                   (AttrC, GBState), Either (String, String) String)
    In the body of letrec with binders ipv_ifkD :: State# RealWorld
    In the body of letrec with binders ipv1_ifkE :: (BaseState
                                                       SwitchBoard,
                                                     (AttrC, GBState),
                                                     Either (String, String) String)
    In a case alternative: ((,,) bs'_ifkH :: BaseState SwitchBoard,
                                 gs'_ifkI :: (AttrC, GBState),
                                 res_ifkJ :: Either (String, String) String)
    In the body of lambda with binder w_s15Sl :: State# RealWorld
    In the body of lambda with binder ww_s15Sq :: BaseState SwitchBoard
    In the body of lambda with binder ww_s15Sr :: CState GBState
    In the body of lambda with binder ww_s15Ss :: Either
                                                    (String, String) [CHSFrag]
    In the body of letrec with binders w_s15Sm :: (BaseState
                                                     SwitchBoard,
                                                   CState GBState,
                                                   Either (String, String) [CHSFrag])
    Substitution: [TCvSubst
                     In scope: InScope {}
                     Type env: []
                     Co env: []]
## Expected behavior

Environment

  • GHC version used: 9.2.5
Edited by Zubin
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information