]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Test most StaticAssert macros in C++ extensions
authorPeter Eisentraut <peter@eisentraut.org>
Tue, 17 Feb 2026 09:06:39 +0000 (10:06 +0100)
committerPeter Eisentraut <peter@eisentraut.org>
Tue, 17 Feb 2026 09:17:57 +0000 (10:17 +0100)
Most of the StaticAssert macros already worked in C++ with Clang and
GCC:(the only compilers we're currently testing C++ extension support
for).  This adds a regression test for them in our test C++ extension,
so we can safely change their implementation without accidentally
breaking C++.

The only macros that StaticAssert macros that don't work yet are the
StaticAssertVariableIsOfType and StaticAssertVariableIsOfTypeMacro.
These will be added in a follow-on commit.

Author: Jelte Fennema-Nio <postgres@jeltef.nl>
Discussion: https://www.postgresql.org/message-id/flat/CAGECzQR21OnnKiZO_1rLWO0-16kg1JBxnVq-wymYW0-_1cUNtg@mail.gmail.com

src/test/modules/test_cplusplusext/test_cplusplusext.cpp

index f1a2ab7f2bf0216706e3b479f02ac3ece7f9f203..8c2eabcca4353b7e452aeac351f975a67c8067c3 100644 (file)
@@ -25,6 +25,8 @@ PG_MODULE_MAGIC;
 PG_FUNCTION_INFO_V1(test_cplusplus_add);
 }
 
+StaticAssertDecl(sizeof(int32) == 4, "int32 should be 4 bytes");
+
 /*
  * Simple function that returns the sum of two integers.  This verifies that
  * C++ extension modules can be loaded and called correctly at runtime.
@@ -47,6 +49,9 @@ test_cplusplus_add(PG_FUNCTION_ARGS)
                (void) rtr;
        }
 
+       StaticAssertStmt(sizeof(int32) == 4, "int32 should be 4 bytes");
+       (void) StaticAssertExpr(sizeof(int64) == 8, "int64 should be 8 bytes");
+
        list_free(list);
        pfree(node);