Move UDLs out of the global namespace (#3605)

* Move UDLs into nlohmann::literals::json_literals namespace

* Add 'using namespace' to unit tests

* Add 'using namespace' to examples

* Add 'using namespace' to README

* Move UDL mkdocs pages out of basic_json/

* Update documentation

* Update docset index

* Add JSON_GlobalUDLs CMake option

* Add unit test

* Build examples without global UDLs

* Add CI target
This commit is contained in:
Florian Albrechtskirchinger
2022-07-31 17:38:52 +02:00
committed by GitHub
parent 8fd8b52907
commit 9aafcbe965
61 changed files with 377 additions and 94 deletions
+1
View File
@@ -11,6 +11,7 @@
#define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <valarray>
+1
View File
@@ -11,6 +11,7 @@
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <iostream>
#include <iterator>
+1
View File
@@ -10,6 +10,7 @@
#include "doctest_compatibility.h"
#include <nlohmann/json.hpp>
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
TEST_CASE_TEMPLATE("element access 2", Json, nlohmann::json, nlohmann::ordered_json)
{
+1
View File
@@ -10,6 +10,7 @@
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <fstream>
#include "make_test_data_available.hpp"
+1
View File
@@ -11,6 +11,7 @@
#define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <sstream>
+1
View File
@@ -10,6 +10,7 @@
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
TEST_CASE("JSON Merge Patch")
{
+1
View File
@@ -10,6 +10,7 @@
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <fstream>
#include <sstream>
+1
View File
@@ -10,6 +10,7 @@
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <deque>
#include <forward_list>
+1
View File
@@ -14,6 +14,7 @@
#define JSON_TESTS_PRIVATE
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <fstream>
#include <sstream>
+1
View File
@@ -22,6 +22,7 @@
#include <nlohmann/json.hpp>
using json = nlohmann::json;
using ordered_json = nlohmann::ordered_json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <cstdio>
#include <list>
+51
View File
@@ -0,0 +1,51 @@
// __ _____ _____ _____
// __| | __| | | | JSON for Modern C++ (supporting code)
// | | |__ | | | | | | version 3.10.5
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
//
// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann <https://nlohmann.me>
// SPDX-License-Identifier: MIT
#include "doctest_compatibility.h"
#undef JSON_USE_GLOBAL_UDLS
#define JSON_USE_GLOBAL_UDLS 0
#include <nlohmann/json.hpp>
TEST_CASE("user-defined string literals")
{
auto j_expected = nlohmann::json::parse(R"({"foo": "bar", "baz": 42})");
auto ptr_expected = nlohmann::json::json_pointer("/foo/bar");
SECTION("using namespace nlohmann::literals::json_literals")
{
using namespace nlohmann::literals::json_literals; // NOLINT(google-build-using-namespace)
CHECK(R"({"foo": "bar", "baz": 42})"_json == j_expected);
CHECK("/foo/bar"_json_pointer == ptr_expected);
}
SECTION("using namespace nlohmann::json_literals")
{
using namespace nlohmann::json_literals; // NOLINT(google-build-using-namespace)
CHECK(R"({"foo": "bar", "baz": 42})"_json == j_expected);
CHECK("/foo/bar"_json_pointer == ptr_expected);
}
SECTION("using namespace nlohmann::literals")
{
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
CHECK(R"({"foo": "bar", "baz": 42})"_json == j_expected);
CHECK("/foo/bar"_json_pointer == ptr_expected);
}
SECTION("using namespace nlohmann")
{
using namespace nlohmann; // NOLINT(google-build-using-namespace)
CHECK(R"({"foo": "bar", "baz": 42})"_json == j_expected);
CHECK("/foo/bar"_json_pointer == ptr_expected);
}
}
+1
View File
@@ -14,6 +14,7 @@ DOCTEST_GCC_SUPPRESS_WARNING("-Wnoexcept")
#include <nlohmann/json.hpp>
using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#include <map>
#include <memory>