[GHC] #10796: Illegal data constructor name: `fromList' ... When splicing a TH expression

GHC ghc-devs at haskell.org
Tue Aug 25 23:41:24 UTC 2015


#10796: Illegal data constructor name: `fromList' ... When splicing a TH expression
-------------------------------------+-------------------------------------
              Reporter:  erisco      |             Owner:
                  Type:  bug         |            Status:  new
              Priority:  normal      |         Milestone:
             Component:  Template    |           Version:  7.8.3
  Haskell                            |
              Keywords:              |  Operating System:  Windows
          Architecture:  x86_64      |   Type of failure:  None/Unknown
  (amd64)                            |
             Test Case:              |        Blocked By:
              Blocking:              |   Related Tickets:
Differential Revisions:              |
-------------------------------------+-------------------------------------
 At the end is a log of my ghci session reproducing the issue. It is
 expected that the splice should succeed, but GHC complains "Illegal data
 constructor name: `fromList' ... When splicing a TH expression".

 Full definitions being used can be found at
 http://hackage.haskell.org/package/regex-tdfa-quasiquoter-0.2.0.0 .
 Briefly, this is the splice being used.

 {{{#!hs
 [e|patternToRegex $patternExp $compOptsExp $execOptsExp|]
 where
 patternExp = dataToExpQ (const Nothing) pattern
 compOptsExp = dataToExpQ (const Nothing) compOpts
 execOptsExp = dataToExpQ (const Nothing) execOpts
 }}}

 Data and Typeable instances are derived (using -XStandaloneDeriving
 -XDeriveDataTypeable) as orphan instances in the Internal module.

 The issue occurs when using bracket expressions (in POSIX regular
 expressions). There may be other cases but I have not uncovered them.

 {{{
 > ghci
 GHCi, version 7.8.3: http://www.haskell.org/ghc/  :? for help
 Loading package ghc-prim ... linking ... done.
 Loading package integer-gmp ... linking ... done.
 Loading package base ... linking ... done.
 >>> :set -XQuasiQuotes
 >>> import Text.Regex.TDFA.QuasiQuoter
 >>> :t [re|;[a]|]
 Loading package transformers-0.3.0.0 ... linking ... done.
 Loading package array-0.5.0.0 ... linking ... done.
 Loading package deepseq-1.3.0.2 ... linking ... done.
 Loading package bytestring-0.10.4.0 ... linking ... done.
 Loading package containers-0.5.5.1 ... linking ... done.
 Loading package mtl-2.1.3.1 ... linking ... done.
 Loading package regex-base-0.93.2 ... linking ... done.
 Loading package text-1.2.0.3 ... linking ... done.
 Loading package parsec-3.1.9 ... linking ... done.
 Loading package regex-tdfa-1.2.0 ... linking ... done.
 Loading package pretty-1.1.1.1 ... linking ... done.
 Loading package template-haskell ... linking ... done.
 Loading package regex-tdfa-quasiquoter-0.2.0.0 ... linking ... done.

 <interactive>:1:5:
     Illegal data constructor name: `fromList'
     When splicing a TH expression:
       Text.Regex.TDFA.TDFA.patternToRegex (GHC.Tuple.(,)
 (Text.Regex.TDFA.Pattern.POr ((GHC.Types.:)
 (Text.Regex.TDFA.Pattern.PConcat ((GHC.Types.:)
 (Text.Regex.TDFA.Pattern.PAny (Text.Regex.TDFA.Common.DoPa 1)
 (Text.Regex.TDFA.Pattern.PatternSet (Data.Maybe.Just
 (Data.Set.Base.fromList ((GHC.Types.:) 'a' GHC.Types.[])))
 Data.Maybe.Nothing Data.Maybe.Nothing Data.Maybe.Nothing)) GHC.Types.[]))
 GHC.Types.[])) (GHC.Tuple.(,) 0 (Text.Regex.TDFA.Common.DoPa 1)))
 (Text.Regex.TDFA.Common.CompOption GHC.Types.True GHC.Types.True
 GHC.Types.True GHC.Types.True GHC.Types.False)
 (Text.Regex.TDFA.Common.ExecOption GHC.Types.True)
 >>>
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10796>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list