Files
micropython/py
Jeff Epler 099991f3ef py/misc: Use _Static_assert for MP_STATIC_ASSERT where possible.
Or use C++ `static_assert` when that's available.

For the same reasons that C++ has trouble with "nonconstexpr" static
assertions, `_Static_assert` rejects such expression as well.  So, fall
back to the old sizeof-array based implementation in that case.

When `_Static_assert` can be used, the diagnostic quality is improved:

    ../py/objint.c: In function ‘mp_obj_int_make_new’:
    ../py/misc.h:67:32: error: static assertion failed: "37 == 42"
    ../py/objint.c:45:5: note: in expansion of macro ‘MP_STATIC_ASSERT’

As compared to a diagnostic about

    ../py/misc.h:71:50: error: size of unnamed array is negative

Testing on godbolt indicated that this actually works back to gcc 4.5, but
it's easier to use GNUC >= 5 as the test; hypothetical users of 4.5, 4.6,
or 4.7 will just get slightly worse diagnostics.

See related issue #18116.

Signed-off-by: Jeff Epler <jepler@unpythonic.net>
2025-10-04 15:47:51 +10:00
..
2025-07-25 10:56:02 +10:00
2025-09-16 13:04:42 +10:00
2025-02-25 16:11:33 +11:00