Commit Graph

4571 Commits (c35d260c2fb91b8a53e585d480607a0f088cbbbb)

Author SHA1 Message Date
Florian Albrechtskirchinger c2054b96b9
Restore disabled check for #3070 (except on MSVC) (#3421)
Restore the previously disabled check for regression #3070 on all
compilers but MSVC.

To summarize the issue:
Given namespace fs = std::filesystem.
On MSVC attempting to construct an fs::path from json results in an
ambiguous overload resolution because fs::path can be constructed from
both a std::string as well as another fs::path.
To the best of my knowledge there is no way to fix an ambiguous overload
situation involving a type we do not control and with json implicitly
converting to both std::string and fs::path.

Re-enabling the check where it compiles and keeping it disabled for MSVC
is the best we can do.

Closes #3377 and #3382.
2022-04-06 08:25:35 +02:00
flagarde ab5cecb34f
Report the right __cplusplus value for MSVC in basic_json meta() (#3417)
* Report the right __cplusplus value for MSVC in basic_json meta()

* Run amalgamate
2022-04-04 20:45:19 +02:00
Florian Albrechtskirchinger 33b75e513a
CI: windows-2016 has been deprecated; remove jobs (#3416) 2022-04-04 13:18:00 +02:00
DarkZeros 6121dbbe02
Avoid clash with Arduino defines (#3338)
* Avoid clash with Arduino defines

* Arduino defines B0/B1 in "binary.h"
     #define B0 0
     #define B1 1
  This clashes with names of the template
  variables in conjuction

* Renaming them to "B" rather than "B1"
  Now it can be used as-is in Arduino projects

* Apply suggestions from code review

* Apply suggestions from code review

Co-authored-by: Daniel Ansorregui <d.ansorregui@samsung.com>
Co-authored-by: Niels Lohmann <niels.lohmann@gmail.com>
2022-04-03 18:33:33 +02:00
Krzysiek Karbowiak 3b16057ffa
Refactor unit tests to use more convenient doctest assertion macros (Part 2) (#3405)
* Refactor assertion and adjust expected error message

* Refactor assertion and adjust expected error message

* Refactor assertion and remove redundant local variable

* Refactor assertion and remove redundant local variable

* Rename local variable

* Apply formatting
2022-04-01 14:38:17 +02:00
Niels Lohmann 66f6b4b6a0
🔧 overwork issue template #3348 2022-03-25 10:16:21 +01:00
Niels Lohmann 1ba736893e
🔧 overwork issue template #3348 2022-03-25 10:12:33 +01:00
Niels Lohmann f7490e33da
🔧 overwork issue template #3348 2022-03-25 10:10:21 +01:00
Krzysiek Karbowiak ce35256825
Refactor unit tests to use more convenient doctest assertion macros (#3393)
* Add missing check

* Refactor assertions in unit-algorithms.cpp

* Refactor assertions in unit-bson.cpp

* Refactor assertions in unit-cbor.cpp

* Refactor assertions in unit-class_const_iterator.cpp

* Refactor assertions in unit-class_iterator.cpp

* Refactor assertions in unit-class_parser.cpp

* Refactor assertions in unit-constructor1.cpp

* Refactor assertions in unit-convenience.cpp

* Refactor assertions in unit-conversions.cpp

* Refactor assertions in unit-deserialization.cpp

* Refactor assertions in unit-element_access1.cpp

* Refactor assertions in unit-element_access2.cpp

* Refactor assertions in unit-iterators1.cpp

* Refactor assertions in unit-iterators2.cpp

* Refactor assertions in unit-json_patch.cpp

* Refactor assertions in unit-json_pointer.cpp

* Refactor assertions in unit-modifiers.cpp

* Refactor assertions in unit-msgpack.cpp

* Refactor assertions in unit-reference_access.cpp

* Refactor assertions in unit-regression1.cpp

* Refactor assertions in unit-serialization.cpp

* Refactor assertions in unit-ubjson.cpp

* Refactor assertions in unit-unicode1.cpp

* Apply formatting
2022-03-24 15:55:35 +01:00
Florian Albrechtskirchinger ad103e5b45
Improve unit testing (Part 1) (#3380)
* Refactor unit test creation

Add functions for creating tests and to supply test- and
standard-specific build settings.

Raises minimum CMake version to 3.13 in test directory.

json_test_add_test_for(
    <file>
    MAIN <main>
    [CXX_STANDARDS <version_number>...] [FORCE])

Given a <file> unit-foo.cpp, produces

    test-foo_cpp<version_number>

if C++ standard <version_number> is supported by the compiler and
thesource file contains JSON_HAS_CPP_<version_number>.  Use FORCE to
create the test regardless of the file containing
JSON_HAS_CPP_<version_number>.  Test targets are linked against <main>.
CXX_STANDARDS defaults to "11".

json_test_set_test_options(
    all|<tests>
    [CXX_STANDARDS all|<args>...]
    [COMPILE_DEFINITIONS <args>...]
    [COMPILE_FEATURES <args>...]
    [COMPILE_OPTIONS <args>...]
    [LINK_LIBRARIES <args>...]
    [LINK_OPTIONS <args>...])

Supply test- and standard-specific build settings.
Specify multiple tests using a list e.g., "test-foo;test-bar".

Must be called BEFORE the test is created.

* Use CMAKE_MODULE_PATH

* Don't undef some macros if JSON_TEST_KEEP_MACROS is defined

* Use JSON_TEST_KEEP_MACROS

Incidentally enables the regression tests for #2546 and #3070.

A CHECK_THROWS_WITH_AS in #3070 was disabled which is tracked in #3377
and a line in from_json(..., std_fs::path&) was marked with LCOV_EXCL_LINE.

* Add three-way comparison feature test macro

* Disable broken comparison if JSON_HAS_THREE_WAY_COMPARISON

* Fix redefinition of inline constexpr statics

Redelcaration of inline constexpr static data members in namespace scope
was deprecated in C++17. Fixes -Werror=deprecated compilation failures.

* Fix more test build failures due to missing noexcept

* CI: update cmake_flags test to use CMake 3.13 in test directory

Also change default for JSON_BuildTests option to depend on CMake
version.

* CI: turn *_CXXFLAGS into CMake lists

* CI: use JSON_TestStandards to set CXX_STANDARD

* CI: pass extra CXXFLAGS to standards tests
2022-03-24 07:54:07 +01:00
Florian Albrechtskirchinger 700b95f447
Make iterator operator++/--(int) equality-preserving (#3332)
Commit f28fc22 introduced const qualifiers on post-(inc-/dec-)rement
operators of iterators. These qualifiers prevent the use of basic_json
in place of std::ranges::range, which requires the post-increment
operator to be equality-preserving.

These changes appear to be the result of ICC compiler suggestions, and
no further explanation is discernible from the PR discussion (#858).
Further testing revealed, that clang-tidy also suggests adding const to
prevent "accidental mutation of a temporary object".

As an alternative, this commit partially reverts f28fc22, removing all
added const qualifiers from return types and adds lvalue reference
qualifiers to the operator member functions instead.

Unit tests ensure the operators remain equality-preserving and
accidental mutation of temporaries following post-(inc-/dec-)rement is
prohibited.

Fixes #3331.
2022-03-08 10:10:50 +01:00
Florian Albrechtskirchinger f208a9c19b
Fix C++20/gcc-12 issues (Part 1) (#3379)
* 🔧 use proper GCC binary

* 🔧 add more GCC warning flags

* ⚗️ try fix from https://github.com/nlohmann/json/issues/3138#issuecomment-1015562666

* Fix custom allocator test build failures (C++20)

Allocator tests fail to compile in C++20 mode with clang+MS STL due
to missing copy constructors.

* Fix test build failures due to missing noexcept (gcc-12)

* alt_string has multiple member functions that should be marked noexcept.
* nlohmann::ordered_map constructors can be noexcept.

Compilation failures result from the warning flag -Werror=noexcept and
gcc-12.

* Disable broken comparison tests in C++20 mode

Co-authored-by: Niels Lohmann <mail@nlohmann.me>
2022-03-07 22:19:28 +01:00
Niels Lohmann 4a6e6ca8c7
📝 update documentation 2022-03-07 13:48:24 +01:00
Andrea Cocito 8d7b5b6a28
Add clarification to avoid misunderstanding that cause #3360 (#3378)
* Update macros.md

Typos, typos
2022-03-07 13:43:50 +01:00
Florian Albrechtskirchinger 0fd95d2e28
Fix ordered_map ctor with initializer_list (#3370)
One of the ordered_map constructors was incorrectly accepting a
std::initializer_list<T> instead of std::initializer_list<value_type>.

Add regression test.

Fixes #3343.
2022-03-07 13:41:35 +01:00
Niels Lohmann c6d8892e5d
FetchContent_MakeAvailable (#3351)
* 🔧 use FetchContent_MakeAvailable

* 💚 fix test names
2022-03-06 15:33:05 +01:00
Florian Albrechtskirchinger d1e57df48b
Fix and update CI (#3368)
* CI: add workflow_dispatch trigger

* CI: change msvc2019*/clang* runners to windows-2019

GitHub updated their runners. windows-latest is now based on Windows
Server 2022 and comes with different tool versions.
MSVC 2019 is still available via the windows-2019 runner.
2022-03-06 13:54:00 +01:00
Faruk D e4643d1f1b
Fix CITATION.cff and add automatic validation of your citation metadata (#3320)
* Update CITATION.cff cffversion to 1.2.0

* Fix CITATION.cff date-released

Co-authored-by: Abel Soares Siqueira <abel.s.siqueira@gmail.com>
2022-02-18 18:11:44 +01:00
Niels Lohmann d8a63291cb
📝 add note on parsing ordered_json #3325 (#3326) 2022-02-12 15:45:51 +01:00
Niels Lohmann eb21824147
📝 replace Doxygen links 2022-02-08 22:12:49 +01:00
pketelsen eec79d4e8a
Add macros NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and ..._NON_INTRUSIVE_WITH_DEFAULT (#3143)
* Added new macros NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT.

* Updated docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT accordingly

* Rephrased docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT

* Updated docs for NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT and NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT

* Renamed default_obj in to avoid name clashes

* Added test for serialization of default constructed object

* Add const to getters for macro tests

Co-authored-by: Chaoya Li <harry75369@gmail.com>
2022-01-30 22:06:50 +01:00
Niels Lohmann c11f98228d
📝 document FetchContent 2022-01-30 13:05:18 +01:00
Thomas Braun 4d4c273036
.github/workflows/windows.yml: Add support for Visual Studio 2022 (#3295)
* .github/workflows/windows.yml: Add support for Visual Studio 2022

This is available in github actions since some time now [1].

[1]: https://github.com/actions/virtual-environments/issues/3949

* README.md: Add VS 2022 [skip ci]

The version and the build engine version (aka MSBuild version) were
taken from [1].

[1]: https://github.com/actions/virtual-environments/blob/win22/20220116.1/images/win/Windows2022-Readme.md
2022-01-26 09:57:23 +01:00
Niels Lohmann b772649624
Add maintainer targets to create source archive (#3289)
* 🔨 add script to create xz archive
2022-01-25 19:53:02 +01:00
Ferry Huberts 293f67f9ff
Fix a typo (#3265) 2022-01-12 21:43:22 +01:00
Niels Lohmann c6740d7d58
📝 add documentation for default behavior for macros 2022-01-11 21:46:40 +01:00
Niels Lohmann ef556019be
📝 overwork documentation 2022-01-09 14:32:38 +01:00
Niels Lohmann 6d8d043add
♻️ make function static 2022-01-05 21:21:46 +01:00
Niels Lohmann 4b6220acf2
✏️ fix typo 2022-01-05 21:18:27 +01:00
Dimitris Apostolou b785783440
Fix typo (#3249) 2022-01-05 13:35:14 +01:00
Niels Lohmann 6cd68ebd12
📝 add documentation for JSON Lines (#3247) 2022-01-05 09:51:29 +01:00
Niels Lohmann 4fc7b3dc7c
🔧 adjust docset generation script 2022-01-04 15:20:50 +01:00
Niels Lohmann a8e86ba948
📝 improve documentation InputType and IteratorType (#3246) 2022-01-04 15:02:39 +01:00
Niels Lohmann 9e89c2fdb5
♻️ remove stringstream (#3244) 2022-01-04 09:25:41 +01:00
Giovanni Cerretani 78ddf2bcf8
fix _MSC_VER version to check for std::filesystem (#3240) 2022-01-03 13:57:51 +01:00
Niels Lohmann cc59ab122f
Merge branch 'release/3.10.5' into develop 2022-01-03 06:40:28 +01:00
Niels Lohmann 4f8fba1406
Merge branch 'release/3.10.5' 2022-01-03 06:40:09 +01:00
Niels Lohmann b5364faf9d
🔖 set version to 3.10.5 2022-01-02 22:35:35 +01:00
Niels Lohmann b69713c394
Fix compilation error with NVCC (#3234) 2022-01-02 09:03:56 +01:00
Niels Lohmann 926df56ddb
🔥 remove Travis CI #3087 (#3233) 2021-12-31 11:04:29 +01:00
Niels Lohmann 1aca6cb949
Add build step for NVCC and fix a warning (#3227)
* 👷 add step for NVCC build #2676
* 🚨 fix warning (code taken from #2736)
* 👷 use version 2.2.0 of the CI image
2021-12-30 13:40:15 +01:00
Niels Lohmann e6bf789f7d
⬆️ update cpplint (#3225) 2021-12-29 20:20:15 +01:00
Niels Lohmann 29cd970b94
Consolidate documentation (#3071)
* 🔥 consolidate documentation
* ♻️ overwork std specializations
* 🚚 move images files to mkdocs
* ♻️ fix URLs
* 🔧 tweak MkDocs configuration
* 🔧 add namespaces
* 📝 document deprecations
* 📝 document documentation generation
* 🚸 improve search
* 🚸 add examples
* 🚧 start adding documentation for macros
* 📝 add note for https://github.com/nlohmann/json/issues/874#issuecomment-1001699139
* 📝 overwork example handling
* 📝 fix Markdown tables
2021-12-29 13:41:01 +01:00
Niels Lohmann 6d3115924c
Add C++17 copies of the test binaries (#3101)
* ⚗️ add C++17 copies of the test binaries
* ⚗️ use proper header for filesystem
* 🚨 fix warnings
* ⚗️ do not use too old compilers with C++17
*  add test
* 🔨 add more constraints #3097
* ⚗️ use fix from https://github.com/nlohmann/json/pull/3101#issuecomment-998788786
* ⚗️ use fix from https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90050
* 👷 use published CI image
2021-12-29 09:47:05 +01:00
Maarten Becker 825d3230d1
Fix: Warning for shadowed variables (#3188) (#3193)
* Rename variable count to resolve shadowing (#3188)

* Amalgamate: Rename variable count to resolve shadowing (#3188)

Co-authored-by: Maarten Becker <maarten.becker@nuc-eng.com>
2021-12-17 07:24:59 +01:00
Prince Mendiratta 760304635d
Fix FAQ hyperlink typo in readme (#3148)
Signed-off-by: Prince Mendiratta <prince.mendi@gmail.com>
2021-11-18 11:58:49 +01:00
Daniel Albuschat ee1208aa60
Docs: Update `skip_comments` to `ignore_comments` (#3145)
In the docs, the `ignore_comments` parameter to `nlohmann::json::parse()` is described as `skip_comments`, which does not match the actual implementation. While the demo code compiles and works, the parameter name is wrong.
2021-11-17 19:21:54 +01:00
Dirk Stolle fe230334d9
fix typos in documentation (#3140)
* fix typos in documentation

* revert changes to ChangeLog.md
2021-11-14 14:25:14 +01:00
Niels Lohmann e9f88c2fad
Add missing erase(first, last) function to ordered_map (#3109) 2021-11-09 22:24:58 +01:00
Alex Beregszaszi 834918018e
Fix spelling (#3125) 2021-11-09 14:46:58 +01:00