mirror of
https://github.com/nlohmann/json.git
synced 2026-10-16 19:18:12 +00:00
Fix CI failures on develop from the API performance stack
- Mark the parameters of the new out-of-line throw helpers in json.hpp as used, as JSON_THROW drops its argument with JSON_NOEXCEPTION (clang -Wunused-parameter). - all_children_leaves() iterates with begin()/end() via std::all_of: a custom array_t such as the one in the custom_array_type example has no rbegin() (examples check, clang-tidy readability-use-anyofallof). - The rvalue to_json overloads (#5837) copy the elements of containers with const elements such as std::set instead of moving them: GCC 4.9's std::move_iterator cannot bind them. Object types are ruled out before std::ranges::view is checked, which needs an incomplete ordered_json for its object_t (GCC 11, C++20, unit-regression3 #3312). - NOLINT the rvalue to_json parameters that are deliberately not forwarded, and fix the other clang-tidy findings (modernize-use-auto in zmij.hpp, readability-math-missing-parentheses in json_pointer.hpp). - cpplint: NOLINT(readability/braces) on the new scalar fast-path macro like on JSON_IMPLEMENT_OPERATOR, and include <map> in json.hpp. - Tests: drop a useless cast (GCC -Wuseless-cast) and a signed/unsigned comparison (MSVC C4018), wrap a vector<json> comparison in parentheses so doctest does not try to print it (ambiguous operator<< on MSVC), and also strip JSON_DIAGNOSTIC_POSITIONS' "(bytes x-y) " from the patch messages in unit-throw_messages. - Windows clang (MinGW): link with LLD. unit-msgpack.cpp (C++11) and unit-regression2.cpp (C++20) have more than 32767 sections again (33363 and 33197), which GNU ld cannot link; LLD links them. Signed-off-by: Niels Lohmann <mail@nlohmann.me>
This commit is contained in:
10 files changed
+137
-67
No files matched your search
@@ -166,19 +166,21 @@ jobs:
|
||||
# link, but the binaries clang 11.0.1 and clang 18.1.8 then produce crash
|
||||
# before doctest prints its first line - 39 of 102 tests on clang 18.
|
||||
# Keep the objects small by splitting the test files instead.
|
||||
# Objects with more than 65535 sections fail to link with "relocation
|
||||
# truncated to fit: IMAGE_REL_AMD64_REL32 against `.rdata'": the MinGW
|
||||
# linker stores the section an associative COMDAT section belongs to in
|
||||
# 16 bits (x_associated in binutils' include/coff/internal.h), so it
|
||||
# discards the jump tables of inline functions together with the wrong
|
||||
# function. Each basic_json specialization a test file instantiates adds
|
||||
# many sections, so test a second one in a file of its own.
|
||||
# The tests link with LLD: GNU ld fails on objects with more than 32767
|
||||
# sections with "relocation truncated to fit: IMAGE_REL_AMD64_REL32
|
||||
# against `.rdata'", as it stores the section an associative COMDAT
|
||||
# section belongs to in 16 bits (x_associated in binutils'
|
||||
# include/coff/internal.h) and so discards the jump tables of inline
|
||||
# functions together with the wrong function. Each basic_json
|
||||
# specialization and input type a test file instantiates adds many
|
||||
# sections, so unit-msgpack.cpp and unit-regression2.cpp kept crossing
|
||||
# that limit as the library grew.
|
||||
- name: Run CMake
|
||||
run: cmake -S . -B build ^
|
||||
-DCMAKE_CXX_COMPILER="C:/Program Files/LLVM/bin/clang++.exe" ^
|
||||
-DCMAKE_CXX_FLAGS="--target=x86_64-w64-mingw32 -stdlib=libstdc++ -pthread" ^
|
||||
-DCMAKE_CXX_FLAGS_DEBUG="-g0" ^
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-lwinpthread" ^
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-fuse-ld=lld -lwinpthread" ^
|
||||
-G"MinGW Makefiles" ^
|
||||
-DCMAKE_BUILD_TYPE=Debug ^
|
||||
-DJSON_BuildTests=On
|
||||
|
||||
Reference in new issue
Block a user