[GHC] #8488: Annotations should not distinguish type and value
GHC
ghc-devs at haskell.org
Fri Apr 25 14:20:38 UTC 2014
#8488: Annotations should not distinguish type and value
-------------------------------------+------------------------------------
Reporter: simonpj | Owner: errge
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.6.3
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture: Unknown/Multiple
Type of failure: None/Unknown | Difficulty: Unknown
Test Case: | Blocked By:
Blocking: | Related Tickets:
-------------------------------------+------------------------------------
Comment (by errge):
I looked into this today, but I got stuck.
The issue is two fold.
When doing the `HsDecls` change things almost work out, except for
prettyprinting, because the current ppr code looks like this:
{{{
pprAnnProvenance (ValueAnnProvenance name) = ptext (sLit "ANN") <+> ppr
name
pprAnnProvenance (TypeAnnProvenance name) = ptext (sLit "ANN type") <+>
ppr name
}}}
So we use `ValueAnnProvenance` vs `TypeAnnProvenance` to decide if we have
to print the type keyword after ANN. I tried to add HasOccName constraint
at the pretty printer (because for an OccName we know the namespace), but
that gets out of hand very quickly, since everywhere we just assume
OutputableBndr now. And I was unsure at that point if it's feasible or
not to add everywhere (`HsExpr`, `HsDecls`, etc.) HasOccName besides
OutputableBndr.
The another issue is on the template haskell side. Template Haskell
`OccName` is just a `String`, not a `(String, NameSpace)` (maybe I should
fix that, btw?). To compensate this mistake we have some heuristics in
`TcSplice` to convert TH names to compiler names. Unfortunately this
means that after the proposed change if the user has `data X = X`, it
would be very hard for the user to put an annotation on the type and on
the constructor both. They would have to resort to `NameG`s which are a
bit hard to create and not straightforward at all.
How should I go forward with this issues?
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8488#comment:3>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list