Redefine gdb_static_assert as static_assert
authorSimon Marchi <simon.marchi@ericsson.com>
Tue, 5 Dec 2017 21:15:08 +0000 (16:15 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Tue, 5 Dec 2017 21:15:09 +0000 (16:15 -0500)
Since we use C++11, we can use static_assert instead doing the trick
that makes a negative-sized array if the expression is false.
static_assert is built in the language and gives clearer error messages.

To avoid modifying the usages of gdb_static_assert, redefine
gdb_static_assert in terms of static_assert, passing an empty message.
If we want to add an assert with a message, it's always possible to use
static_assert directly.

gdb/ChangeLog:

* common/gdb_assert.h (gdb_static_assert): Redefine using
static_assert.

gdb/ChangeLog
gdb/common/gdb_assert.h

index 524eef3f5e555871ef9699d1d6395acb0984db4b..ef0c4bdf4634c538f90eec59d2818fb3fd237074 100644 (file)
@@ -1,3 +1,8 @@
+2017-12-05  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * common/gdb_assert.h (gdb_static_assert): Redefine using
+       static_assert.
+
 2017-12-05  Simon Marchi  <simon.marchi@ericsson.com>
 
        * ada-lang.c (ada_collect_symbol_completion_matches): Remove
index 5de9d3f67065a03884a1732636aefd5e90aff17c..20825c82b005d812ec54fb240d9e738ee2c26971 100644 (file)
@@ -22,8 +22,7 @@
 /* A static assertion.  This will cause a compile-time error if EXPR,
    which must be a compile-time constant, is false.  */
 
-#define gdb_static_assert(expr) \
-  extern int never_defined_just_used_for_checking[(expr) ? 1 : -1]
+#define gdb_static_assert(expr) static_assert (expr, "")
 
 /* PRAGMATICS: "gdb_assert.h":gdb_assert() is a lower case (rather
    than upper case) macro since that provides the closest fit to the