
#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