[GHC] #8624: -ddump-splices-file
GHC
ghc-devs at haskell.org
Mon Dec 30 15:11:12 UTC 2013
#8624: -ddump-splices-file
-------------------------------------+------------------------------------
Reporter: GregWeber | Owner:
Type: feature request | 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 simonpj):
This seems like a very reasonable thing to do. I'm not volunteering to do
it myself, but I'll gladly support anyone who does; I know how the TH
implementation works.
The "untyped" splices are expanded by the renamer, and the "typed" ones by
the type checker. So if you want to see all splices expanded, you need to
look at the output of the type checker. Fortunately that's not difficult:
it is more or less what `-ddump-tc` shows you. So to a first
approximation, what you want is to take the output of `-ddump-tc` and put
it in a file.
But there are always details:
* `-ddump-tc` is, as its name implies, a debugging flag. We have not
taken care to ensure that the pretty-printed output is fully-parsable
Haskell. It should be, but you'd need to work on the `Outputable`
instances for `HsSyn` to make it fully working.
* The type checker "elaborates" the code by adding type abstractions and
applications, dictionary abstractions and applications, and so on. For
debugging purposes you want to see this; but for your purposes you want to
suppress all the elaboration stuff. I've been careful to use different
data constructors in `HsSyn` for elaboration code, so it should be easy to
suppress it. But to do that you need to pass a flag into the pretty
printer (to tell it whether to suppress it) and we need to think about how
to do that. You definitely don't want to write two pretty-printers!
The usual process is to start a GHC Trac wiki page to describe the (user-
facing) specification, and sketch any implementation details or choices.
And use the ticket or `ghc-devs` to discuss.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8624#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list