On Friday, 27 April 2012 at 05:51:36 UTC, Walter Bright wrote:
On 4/26/2012 3:09 AM, James Miller wrote:
I'm trying to write a binding that has conditional sections
where some features
have to be enabled. I am using version statements for this.
I have a list of version specs in a module by themselves. When
I try to compile
another module that imports this module, it acts as if the
version was never
specified. I have tried wrapping the specs inside a version
block, then setting
that from the command but that doesn't work. Setting the
version manually works
as expected. I have also tried including the versions file on
the command line.
All I can think is that version specifiers aren't carried
across modules, which
pretty much makes them completely useless unless you only use
the built-in
versions.
This is quite deliberate behavior.
Aside from the rationale and other solutions given in this
thread, the one I prefer is to define features as functions,
and then implement those functions or not depending on the
configuration.
I would be with Walter on this.
This is the usual behavior in any other module based language
with conditional compilation support. Developers picking up D
would be confused, if the behavior would be different here.
--
Paulo