// __ _____ _____ _____ // __| | __| | | | JSON for Modern C++ // | | |__ | | | | | | version 3.12.0 // |_____|_____|_____|_|___| https://github.com/nlohmann/json // // SPDX-FileCopyrightText: 2013-2026 Niels Lohmann // SPDX-License-Identifier: MIT // This file makes sure that none of the internal JSON_HEDLEY_* macros (vendored // from https://nemequ.github.io/hedley/, see // include/nlohmann/thirdparty/hedley/hedley.hpp) leak into the including // translation unit. include/nlohmann/detail/macro_unscope.hpp is supposed to // #undef every JSON_HEDLEY_* macro (via hedley_undef.hpp) once json.hpp has // been fully processed. See https://github.com/nlohmann/json/issues/5408, // where JSON_HEDLEY_PRAGMA, JSON_HEDLEY_PREDICT_TRUE, JSON_HEDLEY_PREDICT_FALSE, // and JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE escaped this cleanup because // hedley_undef.hpp had no matching #undef for them. // // hedley_undef_checks.inc (included below) is generated at CMake configure/ // build time by cmake/scripts/gen_hedley_undef_check.cmake, which derives the // full list of JSON_HEDLEY_* macro names directly from hedley.hpp. That way // this test covers every macro Hedley actually defines -- not a hardcoded // snapshot that would silently go stale the next time `make update_hedley` // runs -- and can never drift from the vendored header. #include "doctest_compatibility.h" #include TEST_CASE("JSON_HEDLEY macros do not leak after including json.hpp") { #include "hedley_undef_checks.inc" CHECK(true); // keep an assertion when nothing leaked }