Ticket #7667 (new bug)
Template Haskell fails to recognize type operator/function +
| Reported by: | andygill | Owned by: | |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.8.1 |
| Component: | Template Haskell | Version: | 7.6.2 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | GHC rejects valid program | Difficulty: | Unknown |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
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.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.

