summaryrefslogtreecommitdiffstats
path: root/ccan/container_of/test/compile_fail-types.c
diff options
context:
space:
mode:
Diffstat (limited to 'ccan/container_of/test/compile_fail-types.c')
-rw-r--r--ccan/container_of/test/compile_fail-types.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/ccan/container_of/test/compile_fail-types.c b/ccan/container_of/test/compile_fail-types.c
new file mode 100644
index 00000000..cae1c7ab
--- /dev/null
+++ b/ccan/container_of/test/compile_fail-types.c
@@ -0,0 +1,22 @@
+#include <ccan/container_of/container_of.h>
+#include <stdlib.h>
+
+struct foo {
+ int a;
+ char b;
+};
+
+int main(int argc, char *argv[])
+{
+ struct foo foo = { .a = 1, .b = 2 }, *foop;
+ int *intp = &foo.a;
+
+#ifdef FAIL
+ /* b is a char, but intp is an int * */
+ foop = container_of(intp, struct foo, b);
+#else
+ foop = NULL;
+#endif
+ (void) foop; /* Suppress unused-but-set-variable warning. */
+ return intp == NULL;
+}
OpenPOWER on IntegriCloud