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