Repository : ssh://darcs.haskell.org//srv/darcs/packages/template-haskell On branch : master
http://hackage.haskell.org/trac/ghc/changeset/fdeb047bff236b7132c619e7e6ba1852166f0959 >--------------------------------------------------------------- commit fdeb047bff236b7132c619e7e6ba1852166f0959 Author: Ian Lynagh <[email protected]> Date: Wed Feb 8 16:11:16 2012 +0000 Fix the data constructors for tuples etc that dataToExpQ builds Conal Elliott reported that dataToExpQ built a different constructor for () than [| () |]. This patch fixes that, and adds a regression test. >--------------------------------------------------------------- Language/Haskell/TH/Quote.hs | 6 +++--- tests/Makefile | 7 +++++++ tests/all.T | 1 + tests/dataToExpQUnit.hs | 15 +++++++++++++++ tests/dataToExpQUnit.stderr | 1 + 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/Language/Haskell/TH/Quote.hs b/Language/Haskell/TH/Quote.hs index 357bf8f..3a13fe1 100644 --- a/Language/Haskell/TH/Quote.hs +++ b/Language/Haskell/TH/Quote.hs @@ -31,9 +31,9 @@ dataToQa mkCon mkLit appCon antiQ t = conName :: Name conName = case showConstr constr of - "(:)" -> Name (mkOccName ":") NameS - con@"[]" -> Name (mkOccName con) NameS - con@('(':_) -> Name (mkOccName con) NameS + "(:)" -> Name (mkOccName ":") (NameG DataName (mkPkgName "ghc-prim") (mkModName "GHC.Types")) + con@"[]" -> Name (mkOccName con) (NameG DataName (mkPkgName "ghc-prim") (mkModName "GHC.Types")) + con@('(':_) -> Name (mkOccName con) (NameG DataName (mkPkgName "ghc-prim") (mkModName "GHC.Tuple")) con -> mkNameG_d (tyConPackage tycon) (tyConModule tycon) con diff --git a/tests/Makefile b/tests/Makefile new file mode 100644 index 0000000..6a0abcf --- /dev/null +++ b/tests/Makefile @@ -0,0 +1,7 @@ +# This Makefile runs the tests using GHC's testsuite framework. It +# assumes the package is part of a GHC build tree with the testsuite +# installed in ../../../testsuite. + +TOP=../../../testsuite +include $(TOP)/mk/boilerplate.mk +include $(TOP)/mk/test.mk diff --git a/tests/all.T b/tests/all.T new file mode 100644 index 0000000..4179eb3 --- /dev/null +++ b/tests/all.T @@ -0,0 +1 @@ +test('dataToExpQUnit', normal, compile, ['-v0']) diff --git a/tests/dataToExpQUnit.hs b/tests/dataToExpQUnit.hs new file mode 100644 index 0000000..1fac187 --- /dev/null +++ b/tests/dataToExpQUnit.hs @@ -0,0 +1,15 @@ + +{-# LANGUAGE TemplateHaskell #-} + +module Foo where + +import Language.Haskell.TH +import Language.Haskell.TH.Quote +import System.IO + +$( do u1 <- runQ (dataToExpQ (const Nothing) ()) + u2 <- runQ [| () |] + runIO $ print (u1 == u2) + runIO $ hFlush stdout + return [] + ) diff --git a/tests/dataToExpQUnit.stderr b/tests/dataToExpQUnit.stderr new file mode 100644 index 0000000..0ca9514 --- /dev/null +++ b/tests/dataToExpQUnit.stderr @@ -0,0 +1 @@ +True _______________________________________________ Cvs-libraries mailing list [email protected] http://www.haskell.org/mailman/listinfo/cvs-libraries
