[GHC] #7667: Template Haskell fails to recognize type operator/function +

GHC cvs-ghc at haskell.org
Wed Feb 6 16:46:07 CET 2013


#7667: Template Haskell fails to recognize type operator/function +
--------------------------------------+-------------------------------------
Reporter:  andygill                   |          Owner:                  
    Type:  bug                        |         Status:  new             
Priority:  normal                     |      Component:  Template Haskell
 Version:  7.6.2                      |       Keywords:                  
      Os:  Unknown/Multiple           |   Architecture:  Unknown/Multiple
 Failure:  GHC rejects valid program  |      Blockedby:                  
Blocking:                             |        Related:                  
--------------------------------------+-------------------------------------
 The following message is issued for a valid TH program.

 {{{
 Main.hs:7:1:
     Illegal type constructor or class name: `+'
     When splicing a TH declaration:
       type instance GHC.TypeLits.+ 1 2 = 3
 Failed, modules loaded: Test1.
 }}}

 Code attached.

 The program is attempting to capture the name +,
 as used by Nat at the type level.

 The problem appears to be in Convert.hs

 {{{
  -- Convert.hs

      okOcc :: OccName.NameSpace -> String -> Bool
      okOcc _ [] = False
      okOcc ns str@(c:_) | OccName.isVarNameSpace ns = startsVarId c ||
 startsVarSym c
                         | otherwise = startsConId c || startsConSym c ||
 str == "[]"

 }}}

 + is rejected, by okOcc, even though it is acceptable, the symbol neither
 starts with upper-case, or ':'.


 I have tried using reify to extract the *actual* name from other sources
 (rather than use mkNameG_tc), and it fails in the same way.

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



More information about the ghc-tickets mailing list