Template Haskell fails to recognize type operator/function +
|Reported by:||andygill||Owned by:|
|Type of failure:||GHC rejects valid program||Test Case:||th/T7667 th/T7667a|
|Related Tickets:||Differential Rev(s):|
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.
Change History (19)
comment:13 Changed 3 years ago by
|Status:||new → closed|
|Test Case:||th/T7667 → th/T7667 th/T7667a|