bjpop / language-python

A parser for Python 2.x and 3.x written in Haskell
157 stars 46 forks source link

Breaking changes in Happy 2.0 #77

Open bramvdbogaerde opened 1 month ago

bramvdbogaerde commented 1 month ago

I got the following error while trying to build the language-python package:

dist/build/Language/Python/Version3/Parser/Parser.hs:7562:4: error: [GHC-83865]
    • Couldn't match type ‘Happy_GHC_Exts.Int32#’
                     with ‘Happy_GHC_Exts.Int#’
      Expected: Happy_Int
        Actual: Happy_GHC_Exts.Int32#
    • In the expression: Happy_GHC_Exts.indexInt32OffAddr# arr off
      In an equation for ‘happyIndexOffAddr’:
          happyIndexOffAddr (HappyA# arr) off
            = (Happy_GHC_Exts.indexInt32OffAddr# arr off)
     |
7562 |   (Happy_GHC_Exts.indexInt32OffAddr# arr off)
     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: cabal: Failed to build language-python-0.5.8 (which is required by
test-project-0.0.0). See the build log above for details.

which has started to happen as of today right after the release of a new version of the happy parser generator. I am not sure if this is an intented breaking change from the developers of happy or that this is a bug. Nonetheless, I suggest to limit the version of happy <2 so that the new version is not used when building language-python.

Build environment

Steps to reproduce

cabal.project:

with-compiler: ghc-9.6.6
index-state: 2024-09-20T11:02:23Z

packages:
   .

testproject.cabal:

cabal-version: 1.12

name: test-project
version: 0.0.0
build-type:     Simple

library
   hs-source-dirs:
      src
   build-depends:
        base >=4.17 && <5
      , language-python

Run: cabal build to observe the error.

bramvdbogaerde commented 1 month ago

For an unclear reason the reported Haskell version in the __GLASGOW_HASKELL__ macro is redefined as GHC version 7.9 in Parser.y for both parsers. This causes a missing type conversion from a Int32# to an Int#.