add static-assert to sex

Expands to C11 _Static_assert keyword
This commit is contained in:
2026-09-29 21:05:52 +03:00
parent aa5cfc1b7d
commit 1084b7d266
2 changed files with 13 additions and 1 deletions

View File

@@ -114,6 +114,7 @@ forms, and what remains."
((attribute) '%attribute)
((¤) 'vector-ref)
((include) '%include)
((static-assert) '_Static_assert)
;; a `|' inside a symbol has to be escaped to be written in
;; a Scheme source, so we just rename it in fmt-c compatible
;; way

View File

@@ -259,4 +259,15 @@ compiles."
"/* A 2D point. */"))
(test-assert "and an enum docstring too"
(emits? "(enum color \"RGB.\" (red green blue))"
"/* RGB. */"))))
"/* RGB. */")))
;; `static-assert' is the keyword rather than the <assert.h> macro, so
;; a static assertion costs no include. Mapped in `atom-to-fmt-c'
;; because `unkebabify' alone would spell it `static_assert'.
(test-group "static-assert"
(test-assert "emits the C11 keyword"
(emits? (in-fn "(static-assert (== (sizeof int) 4) \"int is four bytes\")")
"_Static_assert(sizeof(int) == 4, \"int is four bytes\")"))
(test-assert "and not the header macro"
(not (emits? (in-fn "(static-assert (== (sizeof int) 4) \"x\")")
"static_assert(")))))