On Wednesday, 6 December 2017 at 19:40:49 UTC, A Guy With a
Question wrote:
On Wednesday, 6 December 2017 at 19:19:09 UTC, A Guy With a
Question wrote:
It seems D's fast compile times are achieved by skipping
semantic checking and even parsing when it doesn't feel it's
needed. I strongly disagree with this decision. This could
leave complex dormant time bombs that break builds
unexpectedly and even accidentally. It's understandable in
certain situations where there is enough information, but the
first step to testing code, is first making sure it
compiles...I don't want the compiler making decisions on what
is worthy to compile. If I pass a d source file into it, I
want to know if it's valid. This is unfortunate. This might be
a deal breaker for me.
I'm very concerned of working with a language that, at minimum,
doesn't let me know if a file I passed in even contains valid
code.
It does let you know if it contains valid code - if you're
actually building it.
If you write unit tests but never compile them in, whether or not
they make any sense is IMHO irrelevant. If you write a template
and never instantiate it, does it make a sound?*
Imagine this:
version(Windows) int i = 0;
else foobarbaz;
Should it fail to compile on Linux? How is this any different
from:
#ifdef _WIN32
int i = 0;
#else
ohnoes
#endif
As noted by others, C++ templates work similarly. And for good
reason!
Atila
* https://en.wikipedia.org/wiki/If_a_tree_falls_in_a_forest