DMD "preprocessed"-source output?

Jarrett Billingsley jarrett.billingsley at gmail.com
Sun Oct 5 07:31:47 PDT 2008


On Sun, Oct 5, 2008 at 8:28 AM, Denis Koroskin <2korden at gmail.com> 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.


More information about the Digitalmars-d-learn mailing list