From d76f9496ce69f8295c3a97a9cc4790a069ff6d59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20W=C3=B3jcik?= Date: Fri, 10 Jan 2025 23:30:55 +0100 Subject: [PATCH 1/3] Implement static assert --- modules/foundation-libc/include/assert.h | 2 ++ modules/foundation-libc/include/foundation/builtins.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/modules/foundation-libc/include/assert.h b/modules/foundation-libc/include/assert.h index 16c49794..624363e7 100644 --- a/modules/foundation-libc/include/assert.h +++ b/modules/foundation-libc/include/assert.h @@ -40,4 +40,6 @@ extern FOUNDATION_LIBC_NORETURN void foundation_libc_assert(char const * asserti #error "bad definition of FOUNDATION_LIBC_ASSERT_DEFAULT!" #endif +#define static_assert FOUNDATION_LIBC_STATIC_ASSERT + #endif diff --git a/modules/foundation-libc/include/foundation/builtins.h b/modules/foundation-libc/include/foundation/builtins.h index e95803e8..a5b57b96 100644 --- a/modules/foundation-libc/include/foundation/builtins.h +++ b/modules/foundation-libc/include/foundation/builtins.h @@ -12,6 +12,8 @@ #define FOUNDATION_LIBC_ASSERT FOUNDATION_LIBC_ASSERT_DEFAULT #endif +#define FOUNDATION_LIBC_STATIC_ASSERT _Static_assert + #if defined(__clang__) #define FOUNDATION_LIBC_NORETURN __attribute__((__noreturn__)) From 78dc4480cb75abcc786bdca79f3f468ef94690a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20W=C3=B3jcik?= Date: Fri, 10 Jan 2025 23:38:39 +0100 Subject: [PATCH 2/3] Exclude from C++ builds --- modules/foundation-libc/include/assert.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/foundation-libc/include/assert.h b/modules/foundation-libc/include/assert.h index 624363e7..b7eaf75a 100644 --- a/modules/foundation-libc/include/assert.h +++ b/modules/foundation-libc/include/assert.h @@ -40,6 +40,8 @@ extern FOUNDATION_LIBC_NORETURN void foundation_libc_assert(char const * asserti #error "bad definition of FOUNDATION_LIBC_ASSERT_DEFAULT!" #endif +#if !defined(__cplusplus) #define static_assert FOUNDATION_LIBC_STATIC_ASSERT +#endif #endif From 3b17a4875702e6612dc4d42f76c1fa64770a9325 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arkadiusz=20W=C3=B3jcik?= Date: Sat, 11 Jan 2025 10:21:03 +0100 Subject: [PATCH 3/3] Fix build error, add test --- modules/foundation-libc/include/assert.h | 1 + modules/foundation-libc/test/src/assert-validator.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/modules/foundation-libc/include/assert.h b/modules/foundation-libc/include/assert.h index b7eaf75a..74ab2cde 100644 --- a/modules/foundation-libc/include/assert.h +++ b/modules/foundation-libc/include/assert.h @@ -41,6 +41,7 @@ extern FOUNDATION_LIBC_NORETURN void foundation_libc_assert(char const * asserti #endif #if !defined(__cplusplus) +#undef static_assert #define static_assert FOUNDATION_LIBC_STATIC_ASSERT #endif diff --git a/modules/foundation-libc/test/src/assert-validator.c b/modules/foundation-libc/test/src/assert-validator.c index b75ca552..db1f4925 100644 --- a/modules/foundation-libc/test/src/assert-validator.c +++ b/modules/foundation-libc/test/src/assert-validator.c @@ -23,3 +23,7 @@ void assert_ok(void) { void assert_bad(void) { assert(0); } + +void assert_static(void) { + static_assert(sizeof(int) == sizeof(int), "int size check"); +}