problem with boolean splicing in templates in ghc 6.10.1

Seems that boolean splicing in haskell templates in ghc 6.10.1 does not work correctly. If you do: $((\b -> [| b |]) True) you get the error: Can't find interface-file declaration for data constructor GHC.Base.True Probable cause: bug in .hi-boot file, or inconsistent .hi file Use -ddump-if-trace to get an idea of which file caused the error It seems that GHC.Base.True is now GHC.Bool.True, but the splicing code still generates the former. Leonidas Fegaras

On Tue, Nov 11, 2008 at 02:16:21PM -0600, Leonidas Fegaras wrote:
Seems that boolean splicing in haskell templates in ghc 6.10.1 does not work correctly. If you do:
$((\b -> [| b |]) True)
you get the error:
Can't find interface-file declaration for data constructor GHC.Base.True Probable cause: bug in .hi-boot file, or inconsistent .hi file Use -ddump-if-trace to get an idea of which file caused the error
It seems that GHC.Base.True is now GHC.Bool.True, but the splicing code still generates the former.
Fixed in HEAD and 6.10 branch, and I've added a test to the testsuite. If you want to build a fixed template-haskell package locally then the fix is: hunk ./Language/Haskell/TH/Syntax.hs 264 -trueName = mkNameG DataName "base" "GHC.Base" "True" -falseName = mkNameG DataName "base" "GHC.Base" "False" +trueName = mkNameG DataName "ghc-prim" "GHC.Bool" "True" +falseName = mkNameG DataName "ghc-prim" "GHC.Bool" "False" Thanks Ian
participants (2)
-
Ian Lynagh
-
Leonidas Fegaras