X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2FSafeAssert.h;h=27293c9c5dd5287e909cbdfd2255202152f746dc;hb=5ba3126fb76f1d81100b34e429c79cd21f8cd142;hp=5fbca62fd94a493daf625a0972731bcda1d2e896;hpb=25b8374ac42519da50960984b541a6740f5d851a;p=folly.git diff --git a/folly/SafeAssert.h b/folly/SafeAssert.h index 5fbca62f..27293c9c 100644 --- a/folly/SafeAssert.h +++ b/folly/SafeAssert.h @@ -1,5 +1,5 @@ /* - * Copyright 2013 Facebook, Inc. + * Copyright 2017 Facebook, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,40 +14,36 @@ * limitations under the License. */ -#ifndef FOLLY_SAFEASSERT_H_ -#define FOLLY_SAFEASSERT_H_ +#pragma once -#include "folly/Portability.h" -#include "folly/Preprocessor.h" +#include +#include /** * Verify that the expression is true. If not, prints an error message * (containing msg) to stderr and abort()s. Just like CHECK(), but only * logs to stderr and only does async-signal-safe calls. */ -#define FOLLY_SAFE_CHECK(expr, msg) \ +#define FOLLY_SAFE_CHECK_IMPL(expr, expr_s, msg) \ ((expr) ? static_cast(0) : \ ::folly::detail::assertionFailure( \ - FB_STRINGIZE(expr), (msg), __FILE__, __LINE__, __PRETTY_FUNCTION__)) + FB_STRINGIZE(expr_s), (msg), __FILE__, __LINE__, __PRETTY_FUNCTION__)) +#define FOLLY_SAFE_CHECK(expr, msg) FOLLY_SAFE_CHECK_IMPL((expr), (expr), (msg)) /** * In debug mode, verify that the expression is true. Otherwise, do nothing - * (do not even evaluate expr). Just like assert() or DCHECK(), but only - * logs to stderr and only does async-signal-safe calls. + * (do not even evaluate expr). Just like DCHECK(), but only logs to stderr and + * only does async-signal-safe calls. */ -#ifdef NDEBUG -#define FOLLY_SAFE_DCHECK(expr, msg) (static_cast(0)) -#else -#define FOLLY_SAFE_DCHECK FOLLY_SAFE_CHECK -#endif +#define FOLLY_SAFE_DCHECK(expr, msg) \ + FOLLY_SAFE_CHECK_IMPL(!folly::kIsDebug || (expr), (expr), (msg)) namespace folly { namespace detail { -void assertionFailure(const char* expr, const char* msg, const char* file, - unsigned int line, const char* function) - FOLLY_NORETURN; - +[[noreturn]] void assertionFailure( + const char* expr, + const char* msg, + const char* file, + unsigned int line, + const char* function); }} // namespace folly - -#endif /* FOLLY_SAFEASSERT_H_ */ -