From 64f620c1a80785e3d0266f4dd9b131e50417c88a Mon Sep 17 00:00:00 2001 From: jaskij Date: Tue, 2 Jul 2024 10:35:24 +0200 Subject: [PATCH] fix c++20-compat false positive (#909) * fix c++20-compat false positive * move the c++20 compat warning suppression to a separate header * fix GCC/clang in private/diagnostic_cxx_20_compat_push.h --------- Co-authored-by: Jan Dorniak --- include/etl/platform.h | 2 + .../private/diagnostic_cxx_20_compat_push.h | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 include/etl/private/diagnostic_cxx_20_compat_push.h diff --git a/include/etl/platform.h b/include/etl/platform.h index 17c7961d5..da9307b4d 100644 --- a/include/etl/platform.h +++ b/include/etl/platform.h @@ -358,9 +358,11 @@ SOFTWARE. //************************************* // Determine if the ETL can use char8_t type. #if ETL_NO_SMALL_CHAR_SUPPORT +#include "private/diagnostic_cxx_20_compat_push.h" typedef uint_least8_t char8_t; #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 0 +#include "private/diagnostic_pop.h" #else #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 1 diff --git a/include/etl/private/diagnostic_cxx_20_compat_push.h b/include/etl/private/diagnostic_cxx_20_compat_push.h new file mode 100644 index 000000000..49a034667 --- /dev/null +++ b/include/etl/private/diagnostic_cxx_20_compat_push.h @@ -0,0 +1,44 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2023 John Wellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +/* + * The header include guard has been intentionally omitted. + * This file is intended to evaluated multiple times by design. + */ + +#if defined(__GNUC__) && !defined(__clang__) && !defined(__llvm__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wc++20-compat" +#endif + +#if defined(__clang__) || defined(__llvm__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wc++20-compat" +#endif