assert/static assert message format difference

Basile B. b2.temp at gmx.com
Tue Jun 13 17:01:36 UTC 2023


On Tuesday, 13 June 2023 at 16:46:26 UTC, DLearner wrote:
> Only a small thing, but is it intended that:
> ```
> void main() {
>
> // static assert (false, "Static Assert triggered");
>    assert(false, "Assert triggered");
>
> }
> ```
> produces
> ```
> core.exception.AssertError at staticassertex01.d(4): Assert 
> triggered
> ```
> but removing the // produces
> ```
> staticassertex01.d(3): Error: static assert:  "Static Assert 
> triggered"
> ```
> ie message surrounded by double-quotes?

internal detail.

Static assert will render the message by formatting an AST node, 
i.e the StringExp (as the string has to be statically evaluable), 
using a compiler module called the hdrgen, leading to have the 
double quotes included, because the hdrgen is supposed to give 
back the source code for a particulat node.

Runtime assert only know the string ptr and len, which are 
runtime values. So... in that case it's more like a format %s, 
that takes another path.


More information about the Digitalmars-d-learn mailing list