Arene Base
Fundamental Utilities For Safety Critical C++
Loading...
Searching...
No Matches
noreturn.hpp
Go to the documentation of this file.
1// Copyright 2024, Toyota Motor Corporation
2//
3// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
4
5#ifndef INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_NORETURN_HPP_
6#define INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_NORETURN_HPP_
7
8// IWYU pragma: private, include "arene/base/compiler_support/attributes.hpp"
9
10#include "arene/base/compiler_support/attributes/has_attribute.hpp"
11
12// NOLINTBEGIN(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
13// parasoft-begin-suppress AUTOSAR-A16_0_1-d-2 "Conditional defines permitted by A16-0-1 Permit #2"
14// parasoft-begin-suppress AUTOSAR-A16_0_1-a-2 "Conditional defines permitted by A16-0-1 Permit #2"
15
16/// @def ARENE_NORETURN
17/// @brief An alias for @c [[noreturn]] , or a no-op if the attribute is not supported
18
19// parasoft-begin-suppress AUTOSAR-M16_0_7-a-2 "False positive: not used as a macro"
20#if ARENE_HAS_STD_ATTRIBUTE(noreturn)
21#define ARENE_NORETURN [[noreturn]]
22#else
23#define ARENE_NORETURN
24#endif
25// parasoft-end-suppress AUTOSAR-M16_0_7-a-2
26
27// NOLINTEND(cppcoreguidelines-macro-usage) Explicitly providing compiler support macro functions
28// parasoft-end-suppress AUTOSAR-A16_0_1-d-2
29// parasoft-end-suppress AUTOSAR-A16_0_1-a-2
30
31#endif // INCLUDE_GUARD_ARENE_BASE_ARENE_BASE_COMPILER_SUPPORT_ATTRIBUTES_NORETURN_HPP_