Merge "Stop #define'ing __func__ and __restrict."

This commit is contained in:
Elliott Hughes 2016-07-25 22:32:56 +00:00 committed by Gerrit Code Review
commit e656a3acaf
5 changed files with 57 additions and 26 deletions

View File

@ -1,6 +1,3 @@
/* $OpenBSD: assert.h,v 1.12 2006/01/31 10:53:51 hshoexer Exp $ */
/* $NetBSD: assert.h,v 1.6 1994/10/26 00:55:44 cgd Exp $ */
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
@ -33,34 +30,33 @@
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)assert.h 8.2 (Berkeley) 1/21/94
*/
/*
* Unlike other ANSI header files, <assert.h> may usefully be included
* multiple times, with and without NDEBUG defined.
* There's no include guard in this file because <assert.h> may usefully be
* included multiple times, with and without NDEBUG defined.
*/
#include <sys/cdefs.h>
#undef assert
#undef _assert
#undef __assert_no_op
#define __assert_no_op __BIONIC_CAST(static_cast, void, 0)
#ifdef NDEBUG
# define assert(e) ((void)0)
# define _assert(e) ((void)0)
# define assert(e) __assert_no_op
#else
# define _assert(e) assert(e)
# if __STDC_VERSION__ >= 199901L
# define assert(e) ((e) ? (void)0 : __assert2(__FILE__, __LINE__, __func__, #e))
# if defined(__cplusplus) || __STDC_VERSION__ >= 199901L
# define assert(e) ((e) ? __assert_no_op : __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, #e))
# else
# define assert(e) ((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
# define assert(e) ((e) ? __assert_no_op : __assert(__FILE__, __LINE__, #e))
# endif
#endif
#if !defined(__cplusplus) && __STDC_VERSION__ >= 201112L
#define static_assert _Static_assert
# undef static_assert
# define static_assert _Static_assert
#endif
__BEGIN_DECLS

View File

@ -149,7 +149,8 @@ int vprintf(const char * __restrict _Nonnull, __va_list) __printflike(1, 0);
int dprintf(int, const char* __restrict _Nonnull, ...) __printflike(2, 3) __INTRODUCED_IN(21);
int vdprintf(int, const char* __restrict _Nonnull, __va_list) __printflike(2, 0) __INTRODUCED_IN(21);
#if __STDC_VERSION__ < 201112L
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L) || \
(defined(__cplusplus) && __cplusplus <= 201103L)
char* gets(char*) __attribute__((deprecated("gets is unsafe, use fgets instead")));
#endif
int sprintf(char* __restrict, const char* __restrict _Nonnull, ...) __printflike(2, 3);

View File

@ -229,16 +229,6 @@
#endif
#endif
/* C99 added the `restrict` type qualifier keyword. Before then, `__restrict` is a GNU extension. */
#if __STDC_VERSION__ >= 199901L
#define __restrict restrict
#endif
/* C99 added the `__func__` predefined identifier. */
#if __STDC_VERSION__ < 199901L
#define __func__ __PRETTY_FUNCTION__
#endif
#define __BIONIC__ 1
#include <android/api-level.h>

View File

@ -52,6 +52,7 @@ cc_test_library {
defaults: ["bionic_tests_defaults"],
srcs: [
"arpa_inet_test.cpp",
"assert_test.cpp",
"buffer_tests.cpp",
"bug_26110743_test.cpp",
"complex_test.cpp",

43
tests/assert_test.cpp Normal file
View File

@ -0,0 +1,43 @@
/*
* Copyright (C) 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <gtest/gtest.h>
#undef NDEBUG
#include <assert.h>
TEST(assert, assert_true) {
assert(true);
}
TEST(assert, assert_false) {
EXPECT_DEATH(assert(false),
"bionic/tests/assert_test.cpp:.*: "
"virtual void assert_assert_false_Test::TestBody\\(\\): "
"assertion \"false\" failed");
}
// Re-include <assert.h> with assertions disabled.
#define NDEBUG
#include <assert.h>
TEST(assert, assert_true_NDEBUG) {
assert(true);
}
TEST(assert, assert_false_NDEBUG) {
assert(false);
}