[spec, CC Dibyendu Majumdar] Should static foreach be in under "conditional compilation"?

Max Haughton maxhaton at gmail.com
Sun May 19 14:42:28 UTC 2019


On Sunday, 19 May 2019 at 09:37:17 UTC, Dibyendu Majumdar wrote:
> On Sunday, 19 May 2019 at 01:27:12 UTC, Max Haughton wrote:
>> On Saturday, 18 May 2019 at 23:39:55 UTC, Mr. Spec wrote:
>>> Maybe it isn't just that static foreach should be moved, but 
>>> maybe just change the page title from "Conditional 
>>> Compilation" to something else that could contain compile 
>>> time features such as version, debug, static assert, etc?
>>
>> To be rigorous, ideally the spec should abstract the process 
>> of execution into discrete steps, one of which would contain 
>> the compile time features of D (i.e. Expand all static 
>> foreach-s into rigorously defined D, but the actual lowering 
>> of this would be handled by a different chapter of the 
>> specification.
>
> I guess this is a tricky area. Is there any document that 
> covers the steps - i.e. when do the compile time modifications 
> occur in the compilation process? Do they occur repeatedly or 
> only once?
>
> Regards

Probably not: The semantic analysis parts of the frontend 
(conceptually) have to jump backwards and forwards because of the 
string mixins (at the very least).

The specification should not make any real preference as to how 
the language is implemented, only specifying the exact semantics 
while leaving enough room for libraries to actually be 
implemented. This is probably too much to ask for at this stage, 
however the current behaviour of certain constructs (e.g. 
Structs) are underspecified e.g. moving, which need to be fixed 
more than the specification as a whole.


More information about the Digitalmars-d mailing list