Ticket #7667 (new bug)
Template Haskell fails to recognize type operator/function +
|Reported by:||andygill||Owned by:|
|Type of failure:||GHC rejects valid program||Difficulty:||Unknown|
|Test Case:||Blocked By:|
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.
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.