From bd9f392599277acd2404688d034aa98b652ee1b7 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 28 Feb 2008 15:20:36 +1100 Subject: [PATCH] Compile even with !HAVE_TYPEOF etc, and remove redundant test case. --- .../test/compile_fail-cast_if_type-callback.c | 26 ------------------- typesafe_cb/test/compile_fail-cast_if_type.c | 3 +++ ...k-int.c => compile_fail-typesafe_cb-int.c} | 4 +-- typesafe_cb/test/compile_fail-typesafe_cb.c | 8 ++++++ .../test/compile_fail-typesafe_cb_postargs.c | 3 +++ .../test/compile_fail-typesafe_cb_preargs.c | 3 +++ 6 files changed, 19 insertions(+), 28 deletions(-) delete mode 100644 typesafe_cb/test/compile_fail-cast_if_type-callback.c rename typesafe_cb/test/{compile_fail-cast_if_type-callback-int.c => compile_fail-typesafe_cb-int.c} (83%) diff --git a/typesafe_cb/test/compile_fail-cast_if_type-callback.c b/typesafe_cb/test/compile_fail-cast_if_type-callback.c deleted file mode 100644 index 313a53ed..00000000 --- a/typesafe_cb/test/compile_fail-cast_if_type-callback.c +++ /dev/null @@ -1,26 +0,0 @@ -#include "typesafe_cb/typesafe_cb.h" -#include - -static void _callback(void (*fn)(void *arg), void *arg) -{ - fn(arg); -} - -#define callback(fn, arg) \ - _callback(cast_if_type((fn), void (*)(typeof(arg)), void (*)(void *)), \ - arg) - -static void my_callback(char *p) -{ -} - -int main(int argc, char *argv[]) -{ - callback(my_callback, "hello world"); - -#ifdef FAIL - /* Must be a char * */ - callback(my_callback, my_callback); -#endif - return 0; -} diff --git a/typesafe_cb/test/compile_fail-cast_if_type.c b/typesafe_cb/test/compile_fail-cast_if_type.c index 2ab3fa23..1e417cba 100644 --- a/typesafe_cb/test/compile_fail-cast_if_type.c +++ b/typesafe_cb/test/compile_fail-cast_if_type.c @@ -14,6 +14,9 @@ int main(int argc, char *argv[]) #ifdef FAIL int x = 0; set_some_value(x); +#if !HAVE_TYPEOF||!HAVE_BUILTIN_CHOOSE_EXPR||!HAVE_BUILTIN_TYPES_COMPATIBLE_P +#error "Unfortunately we don't fail if cast_if_type is a noop." +#endif #else void *p = 0; set_some_value(p); diff --git a/typesafe_cb/test/compile_fail-cast_if_type-callback-int.c b/typesafe_cb/test/compile_fail-typesafe_cb-int.c similarity index 83% rename from typesafe_cb/test/compile_fail-cast_if_type-callback-int.c rename to typesafe_cb/test/compile_fail-typesafe_cb-int.c index 85006c9b..54d0e7ba 100644 --- a/typesafe_cb/test/compile_fail-cast_if_type-callback-int.c +++ b/typesafe_cb/test/compile_fail-typesafe_cb-int.c @@ -10,8 +10,7 @@ void _callback(void (*fn)(void *arg), void *arg) /* Callback is set up to warn if arg isn't a pointer (since it won't * pass cleanly to _callback's second arg. */ #define callback(fn, arg) \ - _callback(cast_if_type((fn), void (*)(typeof(arg)), void (*)(void *)), \ - arg) + _callback(typesafe_cb(void, (fn), (arg)), (arg)) void my_callback(int something); void my_callback(int something) @@ -21,6 +20,7 @@ void my_callback(int something) int main(int argc, char *argv[]) { #ifdef FAIL + /* This fails due to arg, not due to cast. */ callback(my_callback, 100); #endif return 0; diff --git a/typesafe_cb/test/compile_fail-typesafe_cb.c b/typesafe_cb/test/compile_fail-typesafe_cb.c index 34050089..d305d5fb 100644 --- a/typesafe_cb/test/compile_fail-typesafe_cb.c +++ b/typesafe_cb/test/compile_fail-typesafe_cb.c @@ -16,10 +16,18 @@ int main(int argc, char *argv[]) { #ifdef FAIL int *p; +#if !HAVE_TYPEOF||!HAVE_BUILTIN_CHOOSE_EXPR||!HAVE_BUILTIN_TYPES_COMPATIBLE_P +#error "Unfortunately we don't fail if cast_if_type is a noop." +#endif #else char *p; #endif p = NULL; + + /* This should work always. */ + register_callback(my_callback, "hello world"); + + /* This will fail with FAIL defined */ register_callback(my_callback, p); return 0; } diff --git a/typesafe_cb/test/compile_fail-typesafe_cb_postargs.c b/typesafe_cb/test/compile_fail-typesafe_cb_postargs.c index e6ec8260..099eb257 100644 --- a/typesafe_cb/test/compile_fail-typesafe_cb_postargs.c +++ b/typesafe_cb/test/compile_fail-typesafe_cb_postargs.c @@ -15,6 +15,9 @@ int main(int argc, char *argv[]) { #ifdef FAIL int *p; +#if !HAVE_TYPEOF||!HAVE_BUILTIN_CHOOSE_EXPR||!HAVE_BUILTIN_TYPES_COMPATIBLE_P +#error "Unfortunately we don't fail if cast_if_type is a noop." +#endif #else char *p; #endif diff --git a/typesafe_cb/test/compile_fail-typesafe_cb_preargs.c b/typesafe_cb/test/compile_fail-typesafe_cb_preargs.c index ce1ada2f..38daec51 100644 --- a/typesafe_cb/test/compile_fail-typesafe_cb_preargs.c +++ b/typesafe_cb/test/compile_fail-typesafe_cb_preargs.c @@ -16,6 +16,9 @@ int main(int argc, char *argv[]) { #ifdef FAIL int *p; +#if !HAVE_TYPEOF||!HAVE_BUILTIN_CHOOSE_EXPR||!HAVE_BUILTIN_TYPES_COMPATIBLE_P +#error "Unfortunately we don't fail if cast_if_type is a noop." +#endif #else char *p; #endif -- 2.39.2