DMD "preprocessed"-source output?

Denis Koroskin 2korden at
Sun Oct 5 07:38:33 PDT 2008

On Sun, 05 Oct 2008 18:31:47 +0400, Jarrett Billingsley  
<jarrett.billingsley at> wrote:

> On Sun, Oct 5, 2008 at 8:28 AM, Denis Koroskin <2korden at> wrote:
>> On Sun, 05 Oct 2008 04:14:34 +0400, Nick Sabalausky <a at a.a> wrote:
>>> I don't suppose DMD has any way to output a copy of what the source  
>>> files
>>> look like after things like mixins, CTFE and versions are applied?  
>>> (Sort
>>> of
>>> like running a C compiler with a "preprocess-only" flag). I don't see
>>> anything like this in the listed command-line params, but maybe I  
>>> missed
>>> it.
>>> I have a program (that makes heavy use of mixins and CTFE and such)  
>>> that
>>> gives wildly different output between two different versions of  
>>> DMD/Tango
>>> (Tango's documented "breaking changes" don't appear to be the culprit  
>>> and
>>> nothing in DMD's changelog or the latest bugzilla entries seem to
>>> immediately stick out). I'm sure I can track it down, but it would  
>>> help to
>>> narrow things down if I could run the "preprocessed" results from both
>>> environments through a file diff.
>> D doesn't have a dedicated preprocessor and I believe all the mixins and
>> stuff is applied and parsed of fly during AST construction, just like
>> inlining is done on AST instead of codegen phase.
> Yes, but that doesn't necessarily preclude it from being able to i.e.
> output the post-meta code using the same mechanism that outputs
> headers.
> One of the problems I do see with it, however, is template names - at
> least on Windows, DMD will attempt to compress and then ultimately
> MD5-hash long template names to work around limitations in the OMF
> object format it uses.  These would not be valid D identifiers.

Agree. There could also be some kind of mapping from compressed to  
original form, so that's hardly an issue. Besides, identifier compression  
shouldn't take place unless object file is about to be generated, right?

More information about the Digitalmars-d-learn mailing list