haskell / happy

The Happy parser generator for Haskell
Other
276 stars 84 forks source link

GLR_Lib.hs "Couldn't match expected type ‘Bool’ with actual type ‘Int#’" #173

Open andreasabel opened 3 years ago

andreasabel commented 3 years ago

GLR mode seems broken. Trying to compile the generated parser reports several instances of the error Couldn't match expected type ‘Bool’ with actual type ‘Int#’.
E.g

GLR_Lib.hs:236:33: error:
    • Couldn't match expected type ‘Bool’ with actual type ‘Int#’
    • In the expression: (this_state ==# goto this_state m)
      In a stmt of a list comprehension:
        (this_state ==# goto this_state m)
      In the expression:
        [m |
           (m, 0, _) <- rs,
           (this_state ==# goto this_state m),
           m `notElem` cyclic_names]
taasan commented 3 years ago

I get the same error (happy 1.19.12, Haskell Platform 2020.2)

It works if I remove the --ghc flag

--- /usr/share/doc/happy/examples/glr/bio-eg/Makefile   2001-09-09 03:46:40.000000000 +0200
+++ Makefile    2021-02-13 19:41:36.462808073 +0100
@@ -14,7 +14,7 @@
    ${GHC} -cpp -fglasgow-exts  -o ${PROG} --make Main.lhs

 BioData.hs Bio.hs : Bio.y
-   ${HAPPY} --info --glr --ghc ${FILTER} $<
+   ${HAPPY} --info --glr ${FILTER} $<

 Bio.o : Bio.hs BioData.hi
    ${GHC} -cpp -fglasgow-exts  -O2 -c Bio.hs
andreasabel commented 3 years ago

Thanks @taasan for the hint, that helped me to fix https://github.com/BNFC/bnfc/issues/340!

Ericson2314 commented 3 years ago

@andreasabel do you know what version you encountered this originally in? (Or, to cut to the chase, was it 3.20 the latest?)

andreasabel commented 3 years ago

@andreasabel do you know what version you encountered this originally in? (Or, to cut to the chase, was it 3.20 the latest?)

No, this issue is quite a bit older. A couple of years... Could it be due to some non-backwards compatible change in GHC?

Ericson2314 commented 3 years ago

Thanks, @andreasabel.