On Thursday, 1 September 2016 at 21:48:41 UTC, Rory McGuire wrote:
I was hoping that the error was coming from the CTFE engine as
it ran the code, but it comes up before ctfe execution I guess.
As a general comment, there is no such thing as a CTFE phase. It
is performed in-line with other semantic analysis as required.
__traits(compiles, _some_function_that_calls_), thinks that the
invalid code compiles even when it doesn't compile […]
No, you are missing the point. This:
---
void foo() {
@#$!
}
---
will always cause a compiler error, regardless of whether there
is a `__traits(compiles, foo())` somewhere else in the module.
__traits(compiles, …) only applies to its argument and doesn't
magically cause errors in code somewhere else to be ignored.
— David