On Wednesday, 28 December 2022 at 12:42:24 UTC, thebluepandabear wrote:

Before even running the code I get an IDE warning (IntelliJ). Does IntelliJ compile the code in the background?

It will NOT compile successfully unless you do one of these things:

(1) ensure the result of the 'static assert' is true.
(2) comment out the static assert.

Once you do either of (1) or (2) above, it will compile to an executable format.

When you execute it, the runtime will catch the 'assert' failure (ie. assertion == false), and the runtime will bring your program to an immediate halt.

This was just meant to be an example of differentiating compile time from runtime, as per you question.

With static assert, your logic testing is traversed during compilation, and your compilation will come to a stop when the assertion is found to be false, whereas your asserts are traversed during program execution, and if they are found to be false, your program comes to a stop.

https://dlang.org/spec/version.html#static-assert
https://tour.dlang.org/tour/en/gems/contract-programming


Reply via email to