Phil Deets wrote:
Hello, I looked over the language specification, and I could not
find any statement which says where version conditions are
permitted.
Language syntax is generally left to the BNF blocks dotted around the
documentation.
I assumed that they would be permitted most places that #if would
be reasonable in C, but evidently that is not true as they do not
work within enumerations.
That's because D's versioning system isn't a preprocessor.
I would definitely like the following code to work.
enum Tag
{
A, B, C,
version (5) {
D, E,
}
version (7) {
F, G,
}
// ...
}
So would I, except that it makes more sense to me to have the trailing
comma after the '}'. Commas separate, unlike semicolons, which terminate.
Added enumerated values based on versions seems like something that
would be desirable. I ran into this need when converting a header file
to D.
Does anyone know where version conditions are and are not allowed
currently?
They're allowed wherever the grammar expects either a statement or a
declaration.
Would version conditions within enumerations be a good feature to add to
D2?
<snip>
Yes.
Stewart.