tcon: Add an alternate way of building type canaries
[ccan] / ccan / tcon / test / compile_ok.c
index 447f0ee50a02b739fa45e2cb18f4c34e52e652e4..f3fe2c6f8a1a09b4f7d3b2b9f6aee5f285e1d56f 100644 (file)
@@ -1,4 +1,5 @@
 #include <ccan/tcon/tcon.h>
+#include <ccan/build_assert/build_assert.h>
 #include <stdlib.h>
 
 struct container {
@@ -19,9 +20,19 @@ int main(int argc, char *argv[])
 {
        struct int_container icon;
        struct charp_and_int_container cicon;
+       TCON_WRAP(struct container, int tc) iconw;
+       TCON_WRAP(struct container, int tc1; char *tc2) ciconw;
 
        tcon_check(&icon, tc, 7)->raw.p = NULL;
        tcon_check(&cicon, tc1, 7)->raw.p = argv[0];
        tcon_check(&cicon, tc2, argv[0])->raw.p = argv[0];
+
+       tcon_unwrap(tcon_check(&iconw, tc, 7))->p = NULL;
+       tcon_unwrap(tcon_check(&ciconw, tc1, 7))->p = argv[0];
+       tcon_unwrap(tcon_check(&ciconw, tc2, argv[0]))->p = argv[0];
+
+       BUILD_ASSERT(sizeof(iconw) == sizeof(struct container));
+       BUILD_ASSERT(sizeof(ciconw) == sizeof(struct container));
+
        return 0;
 }