DMD "preprocessed"-source output?
Denis Koroskin
2korden at gmail.com
Sun Oct 5 07:38:33 PDT 2008
On Sun, 05 Oct 2008 18:31:47 +0400, Jarrett Billingsley
<jarrett.billingsley at gmail.com> wrote:
> 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.
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