diff --git a/CHANGELOG.md b/CHANGELOG.md index 070b4592..08b9afa2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ HEAD * Remove undocumented `JsonArrayIterator::internal()` and `JsonObjectIterator::internal()` * Rename things in `ARDUINOJSON_NAMESPACE` to match the public names * Add documentation to most public symbols +* Remove support for naked `char` (was deprecated since 6.18.0) > ### BREAKING CHANGES > diff --git a/extras/tests/Misc/CMakeLists.txt b/extras/tests/Misc/CMakeLists.txt index 114ebb74..d567efbd 100644 --- a/extras/tests/Misc/CMakeLists.txt +++ b/extras/tests/Misc/CMakeLists.txt @@ -5,7 +5,6 @@ add_executable(MiscTests arithmeticCompare.cpp conflicts.cpp - deprecated.cpp FloatParts.cpp JsonString.cpp NoArduinoHeader.cpp diff --git a/extras/tests/Misc/deprecated.cpp b/extras/tests/Misc/deprecated.cpp deleted file mode 100644 index 646ca056..00000000 --- a/extras/tests/Misc/deprecated.cpp +++ /dev/null @@ -1,115 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2022, Benoit BLANCHON -// MIT License - -#define ARDUINOJSON_DEPRECATED(msg) // nothing - -#include -#include - -TEST_CASE("Deprecated features") { - StaticJsonDocument<256> doc; - const char* s = "hello"; - doc["s"] = s; - doc["c"] = 42; - doc["a"].add(s); - doc["a"].add(42); - - SECTION("JsonVariant::add(char)") { - JsonVariant v = doc.to(); - v.add('*'); - REQUIRE(v[0] == 42); - } - - SECTION("JsonVariant::as()") { - JsonVariant v = doc["s"]; - REQUIRE(v.as() == s); - } - - SECTION("JsonVariant::as()") { - JsonVariant v = doc["c"]; - REQUIRE(v.as() == '*'); - } - - SECTION("JsonVariant::is()") { - JsonVariant v = doc["s"]; - REQUIRE(v.is() == true); - } - - SECTION("JsonVariant::is()") { - JsonVariant v = doc["c"]; - REQUIRE(v.is() == true); - } - - SECTION("JsonVariant::set(char)") { - JsonVariant v = doc.to(); - v.set('*'); - REQUIRE(v.as() == 42); - } - - SECTION("JsonVariantConst::as()") { - JsonVariantConst v = doc["s"]; - REQUIRE(v.as() == s); - } - - SECTION("JsonVariantConst::as()") { - JsonVariantConst v = doc["c"]; - REQUIRE(v.as() == '*'); - } - - SECTION("JsonVariantConst::is()") { - JsonVariantConst v = doc["s"]; - REQUIRE(v.is() == true); - } - - SECTION("JsonVariantConst::is()") { - JsonVariantConst v = doc["c"]; - REQUIRE(v.is() == true); - } - - SECTION("MemberProxy::as()") { - REQUIRE(doc["s"].as() == s); - } - - SECTION("MemberProxy::as()") { - REQUIRE(doc["c"].as() == '*'); - } - - SECTION("MemberProxy::as()") { - doc["x"].set('*'); - REQUIRE(doc["x"] == 42); - } - - SECTION("MemberProxy::is()") { - REQUIRE(doc["s"].is() == true); - REQUIRE(doc["c"].is() == false); - } - - SECTION("MemberProxy::is()") { - REQUIRE(doc["c"].is() == true); - REQUIRE(doc["s"].is() == false); - } - - SECTION("ElementProxy::as()") { - REQUIRE(doc["a"][0].as() == s); - } - - SECTION("ElementProxy::as()") { - REQUIRE(doc["a"][1].as() == '*'); - } - - SECTION("ElementProxy::as()") { - doc["a"][0].set('*'); - REQUIRE(doc["a"][0] == 42); - } - - SECTION("ElementProxy::is()") { - REQUIRE(doc["a"][0].is() == true); - REQUIRE(doc["a"][1].is() == false); - } - - SECTION("ElementProxy::is()") { - REQUIRE(doc["a"][1].is() == true); - REQUIRE(doc["a"][0].is() == false); - } -} diff --git a/src/ArduinoJson/Polyfills/attributes.hpp b/src/ArduinoJson/Polyfills/attributes.hpp index a4a330bb..9e37c82a 100644 --- a/src/ArduinoJson/Polyfills/attributes.hpp +++ b/src/ArduinoJson/Polyfills/attributes.hpp @@ -9,32 +9,16 @@ # define FORCE_INLINE // __forceinline causes C4714 when returning std::string # define NO_INLINE __declspec(noinline) -# ifndef ARDUINOJSON_DEPRECATED -# define ARDUINOJSON_DEPRECATED(msg) __declspec(deprecated(msg)) -# endif - #elif defined(__GNUC__) // GCC or Clang # define FORCE_INLINE __attribute__((always_inline)) # define NO_INLINE __attribute__((noinline)) -# ifndef ARDUINOJSON_DEPRECATED -# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5) -# define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated(msg))) -# else -# define ARDUINOJSON_DEPRECATED(msg) __attribute__((deprecated)) -# endif -# endif - #else // Other compilers # define FORCE_INLINE # define NO_INLINE -# ifndef ARDUINOJSON_DEPRECATED -# define ARDUINOJSON_DEPRECATED(msg) -# endif - #endif #if __cplusplus >= 201103L diff --git a/src/ArduinoJson/Variant/JsonVariantConst.hpp b/src/ArduinoJson/Variant/JsonVariantConst.hpp index 7c831d3a..c15202e0 100644 --- a/src/ArduinoJson/Variant/JsonVariantConst.hpp +++ b/src/ArduinoJson/Variant/JsonVariantConst.hpp @@ -74,25 +74,6 @@ class JsonVariantConst : public VariantTag, return Converter::fromJson(*this); } - // Deprecated: use as() instead. - // https://arduinojson.org/v6/api/jsonvariantconst/as/ - template - FORCE_INLINE typename enable_if::value, const char*>::type - ARDUINOJSON_DEPRECATED("Replace as() with as()") - as() const { - return as(); - } - - // Deprecated: use as() or as() instead. - // https://arduinojson.org/v6/api/jsonvariantconst/as/ - template - FORCE_INLINE typename enable_if::value, char>::type - ARDUINOJSON_DEPRECATED( - "Support for char is deprecated, use int8_t or uint8_t instead") - as() const { - return static_cast(as()); - } - // Returns true if the value is of the specified type. // https://arduinojson.org/v6/api/jsonvariantconst/is/ template @@ -103,25 +84,6 @@ class JsonVariantConst : public VariantTag, return Converter::checkJson(*this); } - // Deprecated: use is() instead. - // https://arduinojson.org/v6/api/jsonvariantconst/is/ - template - FORCE_INLINE typename enable_if::value, bool>::type - ARDUINOJSON_DEPRECATED("Replace is() with is()") - is() const { - return is(); - } - - // Deprecated: use is() or is() instead. - // https://arduinojson.org/v6/api/jsonvariantconst/is/ - template - FORCE_INLINE typename enable_if::value, bool>::type - ARDUINOJSON_DEPRECATED( - "Support for char is deprecated, use int8_t or uint8_t instead") - is() const { - return is(); - } - template FORCE_INLINE operator T() const { return as(); diff --git a/src/ArduinoJson/Variant/VariantImpl.hpp b/src/ArduinoJson/Variant/VariantImpl.hpp index 7ea8be1c..ced1b8a5 100644 --- a/src/ArduinoJson/Variant/VariantImpl.hpp +++ b/src/ArduinoJson/Variant/VariantImpl.hpp @@ -142,12 +142,6 @@ VariantRefBase::to() const { return *this; } -// Out of class definition to avoid #1560 -template -inline bool VariantRefBase::set(char value) const { - return set(static_cast(value)); -} - template inline void convertToJson(const VariantRefBase& src, JsonVariant dst) { diff --git a/src/ArduinoJson/Variant/VariantRefBase.hpp b/src/ArduinoJson/Variant/VariantRefBase.hpp index 8675bc44..ddfcf0d6 100644 --- a/src/ArduinoJson/Variant/VariantRefBase.hpp +++ b/src/ArduinoJson/Variant/VariantRefBase.hpp @@ -62,25 +62,6 @@ class VariantRefBase : public VariantTag { return Converter::fromJson(getVariant()); } - // Deprecated: use as() instead. - // https://arduinojson.org/v6/api/jsonvariant/as/ - template - FORCE_INLINE typename enable_if::value, const char*>::type - ARDUINOJSON_DEPRECATED("Replace as() with as()") - as() const { - return as(); - } - - // Deprecated: use as() or as() instead. - // https://arduinojson.org/v6/api/jsonvariant/as/ - template - FORCE_INLINE typename enable_if::value, char>::type - ARDUINOJSON_DEPRECATED( - "Support for char is deprecated, use int8_t or uint8_t instead") - as() const { - return static_cast(as()); - } - template FORCE_INLINE operator T() const { return as(); @@ -126,25 +107,6 @@ class VariantRefBase : public VariantTag { return Converter::checkJson(getVariantConst()); } - // Deprecated: use is() instead. - // https://arduinojson.org/v6/api/jsonvariant/is/ - template - FORCE_INLINE typename enable_if::value, bool>::type - ARDUINOJSON_DEPRECATED("Replace is() with is()") - is() const { - return is(); - } - - // Deprecated: use is() or is() instead. - // https://arduinojson.org/v6/api/jsonvariant/is/ - template - FORCE_INLINE typename enable_if::value, bool>::type - ARDUINOJSON_DEPRECATED( - "Support for char is deprecated, use int8_t or uint8_t instead") - is() const { - return is(); - } - // Shallow copies the specified value. // https://arduinojson.org/v6/api/jsonvariant/shallowcopy/ FORCE_INLINE void shallowCopy(JsonVariantConst target) { @@ -176,12 +138,6 @@ class VariantRefBase : public VariantTag { return pool && !pool->overflowed(); } - // Deprecated: use int8_t or uint8_t instead - // https://arduinojson.org/v6/api/jsonvariant/set/ - bool ARDUINOJSON_DEPRECATED( - "Support for char is deprecated, use int8_t or uint8_t instead") - set(char value) const; - // Returns the size of the array or object. // https://arduinojson.org/v6/api/jsonvariant/size/ FORCE_INLINE size_t size() const {