That one last frontend feature to obsolete rebuild
Gregor Richards
Richards at codu.org
Thu Mar 13 17:40:32 PDT 2008
Simen Kjaeraas wrote:
> On Wed, 12 Mar 2008 20:51:39 +0100, Gregor Richards <Richards at codu.org>
> wrote:
>
>> Believe it or not, I'd really like to obsolete rebuild. I'd love to
>> have a tiny little script that just reads the output of [g]dmd -v and
>> gets the list of files (and everything else) from that. At this point,
>> I'm very close to being able to accomplish this feat, as the
>> recent(ish) addition of outputting every file that's imported got my
>> 90% of the way there, but there's one problem. rebuild supports
>> nonstandard pragmas, and the compiler chokes on them.
>>
>> I would like to see a flag (-print-unsupported-pragmas or something
>> else obscure, doesn't need to be short or simple) that changed the
>> frontend's default behavior from choking on unrecognized pragmas to
>> printing them out with the verbose output, e.g.:
>> pragma link "(argument to the pragma)"
>>
>> Clearly this wouldn't work for pragmas which wrap declarations, but
>> for simple pragmas it would - and simple pragmas are all I need, and
>> probably all that most frontend-extending tools would need. With this
>> one, comparably simple change, I could scrap rebuild and write a
>> simple script that would be incapable of becoming outdated. Heck, if
>> you'd like, I could even write it and submit a patch :)
>>
>> - Gregor Richards
>
>
> While I agree it's not quite as elegant, couldn't
>
> pragma(msg, "rebuild link\t\"argument\"");
>
> do what you want?
>
> To make it prettier (and ensure that things are formatted correctly) you
> could even create a function like this:
>
> string rebuildPragma(string type, string argument)
> {
> return "rebuild " ~ type ~ "\t\"" ~ argument ~ "\"";
> }
>
> and used like this:
>
> pragma(msg, rebuildPragma("link", "argument"));
>
> Such a function would require another import, of course. Are there any
> other problems with such an approach?
>
> --Simen
This is how I would have done it in the first place if I didn't have the
legacy of bud compatibility. However, to maintain backwards
compatibility, I can't use this method.
- Gregor Richards
More information about the Digitalmars-d
mailing list