mirror of
https://github.com/nlohmann/json.git
synced 2024-11-27 16:49:02 +08:00
a259ecc51e
* Enhance the UDT unit test to expose the issue Add a new enum type with uint64_t as the underlying type. Use it in the overall UDT. Not strictly needed, but it helps exercise its expected usage. Create an object of this enum type with a large value (negative if cast to int64_t). Perform several checks on this object as converted to `json`, which fail without the fix. * Fix the issue in the relevant `to_json` overload. Select the correct json type depending on the signedness of the enum's underlying type. This fixes the new checks in the unit test. * Add the fix to the single_include I ran `make pretty` but that modified 20 files, performing a significant amount of indentation changes, none of them related to my change. I ran `make amalgamate`, but that did nothing. Apparently, the make rule won't run if the single_include files have already been updated by `make pretty`. I forced `make amalgamate` to do the work by touching the file with the fix. I then decided to keep just the minimal needed change: the addition of the fix to the single_include file. I just am not conversant enough in Linux to know whether I installed astyle correctly (had to clone the source from a beta branch and build, in order to get support for `--squeeze-lines`). * Resolve CI errors and use qualified `std::uint64_t` The fix was relying on implicit conversions in the non-taken branch. - Ordinarily (work on a C++20 codebase) I would have used `if constexpr` here, sidestepping the issue, but that's not available on C++11 so I didn't bother. - So instead of an `if` statement, I used a compile-time constant to select the correct overload. - This is arguably better in this case, anyway. I was using function-style casts for typed constants, which I consider superior for constants, but the CI checks disagree, so changed all to `static_cast`. - For some reason, the CI checks didn't point at all of them, so I hope I caught them all myself. Built with clang14 and all unit tests pass. --------- Co-authored-by: Juan Carlos Arevalo Baeza (JCAB) <jcab@ntdev.microsoft.com> |
||
---|---|---|
.. | ||
abi | ||
benchmarks | ||
cmake_add_subdirectory | ||
cmake_fetch_content | ||
cmake_fetch_content2 | ||
cmake_import | ||
cmake_import_minver | ||
cmake_target_include_directories | ||
cuda_example | ||
reports | ||
src | ||
thirdparty | ||
CMakeLists.txt | ||
fuzzing.md | ||
Makefile |