Skip to content

GHC 9.12: tests fail to compile #125

Description

@Vekhir

While building vec 0.5.1.1 on Arch Linux with GHC 9.12, several tests in test/Inspection/DataFamily/SpineStrict.hs
are failing to compile due to mismatches between the LHS and the RHS (Inline, IMap, Join, Snoc, Reverse).

Earlier GHCs are fine.

Error message

[2 of 3] Compiling Inspection.DataFamily.SpineStrict ( test/Inspection/DataFamily/SpineStrict.hs, dist/build/inspection/inspection-tmp/Inspection/DataFamily/SpineStrict.dyn_o )
test/Inspection/DataFamily/SpineStrict.hs:34:1: lhsInline === rhsZipWith failed:
inequal terms:
lhsInline_sg8K `cast` <Co:4> :: ...
and
rhsZipWith_sg04
LHS:
    lhsInline
      = (::: twoThree_sg00 (lhsInline_sg8K `cast` <Co:4> :: ...))
        `cast` <Co:5> :: ...
    
    lhsInline_sg8K = ::: rhsZipWith_sg03 $WVNil
    
RHS:
    rhsZipWith
      = (::: twoThree_sg00 rhsZipWith_sg04) `cast` <Co:4> :: ...
    
    rhsZipWith_sg04 = (::: rhsZipWith_sg03 $WVNil) `cast` <Co:4> :: ...
    
test/Inspection/DataFamily/SpineStrict.hs:46:1: lhsIMap === rhsIMap failed:
inequal terms: lhsIMap_sg8H `cast` <Co:7> :: ... and rhsIMap_sg0a
LHS:
    lhsIMap
      = (::: lhsIMap_sg8D (lhsIMap_sg8H `cast` <Co:7> :: ...))
        `cast` <Co:8> :: ...
    
    lhsIMap_sg8D = ($WFZ, rhsIMap_sg05)
    
    lhsIMap_sg8G = (rhsIMap_sg07, rhsIMap_sg08)
    
    lhsIMap_sg8H = ::: lhsIMap_sg8G $WVNil
    
RHS:
    rhsIMap = (::: rhsIMap_sg06 rhsIMap_sg0a) `cast` <Co:7> :: ...
    
    rhsIMap_sg06 = ($WFZ, rhsIMap_sg05)
    
    rhsIMap_sg09 = (rhsIMap_sg07, rhsIMap_sg08)
    
    rhsIMap_sg0a = (::: rhsIMap_sg09 $WVNil) `cast` <Co:7> :: ...
    
test/Inspection/DataFamily/SpineStrict.hs:59:1: lhsDotProduct === rhsDotProduct passed.
test/Inspection/DataFamily/SpineStrict.hs:71:1: lhsJoin === rhsJoin failed:
inequal terms: lhsJoin_sg8j `cast` <Co:4> :: ... and rhsJoin_sg0d
LHS:
    lhsJoin
      = (::: rhsIMap_sg05 (lhsJoin_sg8j `cast` <Co:4> :: ...))
        `cast` <Co:5> :: ...
    
    lhsJoin_sg8j = ::: rhsJoin_sg0c $WVNil
    
RHS:
    rhsJoin = (::: rhsIMap_sg05 rhsJoin_sg0d) `cast` <Co:4> :: ...
    
    rhsJoin_sg0d = (::: rhsJoin_sg0c $WVNil) `cast` <Co:4> :: ...
    
test/Inspection/DataFamily/SpineStrict.hs:83:1: lhsSnoc === rhsSnoc failed:
inequal terms: lhsSnoc_sg8e `cast` <Co:5> :: ... and rhsSnoc_sg0i
LHS:
    lhsSnoc
      = (::: rhsIMap_sg05 (lhsSnoc_sg8e `cast` <Co:5> :: ...))
        `cast` <Co:6> :: ...
    
    lhsSnoc_sg8d = ::: rhsSnoc_sg0g $WVNil
    
    lhsSnoc_sg8e = ::: rhsIMap_sg08 (lhsSnoc_sg8d `cast` <Co:4> :: ...)
    
RHS:
    rhsSnoc = (::: rhsIMap_sg05 rhsSnoc_sg0i) `cast` <Co:4> :: ...
    
    rhsSnoc_sg0h = (::: rhsSnoc_sg0g $WVNil) `cast` <Co:4> :: ...
    
    rhsSnoc_sg0i = (::: rhsIMap_sg08 rhsSnoc_sg0h) `cast` <Co:4> :: ...
    
test/Inspection/DataFamily/SpineStrict.hs:95:1: lhsReverse === rhsReverse failed:
inequal terms:
lhsReverse_sgck `cast` <Co:5> :: ...
and
rhsReverse_sg0n
LHS:
    lhsReverse
      = (::: rhsIMap_sg05 (lhsReverse_sgck `cast` <Co:5> :: ...))
        `cast` <Co:6> :: ...
    
    lhsReverse_sgcj = ::: rhsSnoc_sg0g $WVNil
    
    lhsReverse_sgck
      = ::: rhsIMap_sg08 (lhsReverse_sgcj `cast` <Co:4> :: ...)
    
RHS:
    rhsReverse
      = (::: rhsIMap_sg05 rhsReverse_sg0n) `cast` <Co:4> :: ...
    
    rhsReverse_sg0m = (::: rhsSnoc_sg0g $WVNil) `cast` <Co:4> :: ...
    
    rhsReverse_sg0n
      = (::: rhsIMap_sg08 rhsReverse_sg0m) `cast` <Co:4> :: ...
    
test/Inspection/DataFamily/SpineStrict.hs: error:
    inspection testing unsuccessful
          expected successes: 1
         unexpected failures: 5

<no location info>: error: ExitFailure 1

With fin 0.3.2, a similar issue occurs:

test/Inspection.hs:51:1: lhsInline === rhs failed:
lhsInline  and  rhs are different external names
test/Inspection.hs:52:1: lhsNormal === rhs failed expectedly.
test/Inspection.hs:65:1: lhsProof ==- rhsProof failed:
lhsProof  and  rhsProof are different external names
test/Inspection.hs:91:1: lhsFold === rhsFold failed:
lhsFold  and  rhsFold are different external names
test/Inspection.hs:92:1: lhsFold' === rhsFold failed expectedly.
test/Inspection.hs:100:1: lhsUnfold === rhsUnfold failed:
lhsUnfold  and  rhsUnfold are different external names
test/Inspection.hs:117:1: lhsPower5 === rhsPower5 failed:
lhsPower5  and  rhsPower5 are different external names

I don't know where the difference comes from, especially seeing that the package is supposed to support GHC 9.12 already. Any ideas?

Full build log:
haskell-vec-0.5.1.1-11-x86_64-build.log

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions