Parcourir la source

Remove support for naked `char` (was deprecated since 6.18.0)

Benoit Blanchon il y a 3 ans
Parent
commit
191fc5dff4

+ 1 - 0
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
 >

+ 0 - 1
extras/tests/Misc/CMakeLists.txt

@@ -5,7 +5,6 @@
 add_executable(MiscTests
 	arithmeticCompare.cpp
 	conflicts.cpp
-	deprecated.cpp
 	FloatParts.cpp
 	JsonString.cpp
 	NoArduinoHeader.cpp

+ 0 - 115
extras/tests/Misc/deprecated.cpp

@@ -1,115 +0,0 @@
-// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2022, Benoit BLANCHON
-// MIT License
-
-#define ARDUINOJSON_DEPRECATED(msg)  // nothing
-
-#include <ArduinoJson.h>
-#include <catch.hpp>
-
-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<JsonVariant>();
-    v.add('*');
-    REQUIRE(v[0] == 42);
-  }
-
-  SECTION("JsonVariant::as<char*>()") {
-    JsonVariant v = doc["s"];
-    REQUIRE(v.as<char*>() == s);
-  }
-
-  SECTION("JsonVariant::as<char>()") {
-    JsonVariant v = doc["c"];
-    REQUIRE(v.as<char>() == '*');
-  }
-
-  SECTION("JsonVariant::is<char*>()") {
-    JsonVariant v = doc["s"];
-    REQUIRE(v.is<char*>() == true);
-  }
-
-  SECTION("JsonVariant::is<char>()") {
-    JsonVariant v = doc["c"];
-    REQUIRE(v.is<char>() == true);
-  }
-
-  SECTION("JsonVariant::set(char)") {
-    JsonVariant v = doc.to<JsonVariant>();
-    v.set('*');
-    REQUIRE(v.as<unsigned char>() == 42);
-  }
-
-  SECTION("JsonVariantConst::as<char*>()") {
-    JsonVariantConst v = doc["s"];
-    REQUIRE(v.as<char*>() == s);
-  }
-
-  SECTION("JsonVariantConst::as<char>()") {
-    JsonVariantConst v = doc["c"];
-    REQUIRE(v.as<char>() == '*');
-  }
-
-  SECTION("JsonVariantConst::is<char*>()") {
-    JsonVariantConst v = doc["s"];
-    REQUIRE(v.is<char*>() == true);
-  }
-
-  SECTION("JsonVariantConst::is<char>()") {
-    JsonVariantConst v = doc["c"];
-    REQUIRE(v.is<char>() == true);
-  }
-
-  SECTION("MemberProxy::as<char*>()") {
-    REQUIRE(doc["s"].as<char*>() == s);
-  }
-
-  SECTION("MemberProxy::as<char>()") {
-    REQUIRE(doc["c"].as<char>() == '*');
-  }
-
-  SECTION("MemberProxy::as<char>()") {
-    doc["x"].set('*');
-    REQUIRE(doc["x"] == 42);
-  }
-
-  SECTION("MemberProxy::is<char*>()") {
-    REQUIRE(doc["s"].is<char*>() == true);
-    REQUIRE(doc["c"].is<char*>() == false);
-  }
-
-  SECTION("MemberProxy::is<char>()") {
-    REQUIRE(doc["c"].is<char>() == true);
-    REQUIRE(doc["s"].is<char>() == false);
-  }
-
-  SECTION("ElementProxy::as<char*>()") {
-    REQUIRE(doc["a"][0].as<char*>() == s);
-  }
-
-  SECTION("ElementProxy::as<char>()") {
-    REQUIRE(doc["a"][1].as<char>() == '*');
-  }
-
-  SECTION("ElementProxy::as<char>()") {
-    doc["a"][0].set('*');
-    REQUIRE(doc["a"][0] == 42);
-  }
-
-  SECTION("ElementProxy::is<char*>()") {
-    REQUIRE(doc["a"][0].is<char*>() == true);
-    REQUIRE(doc["a"][1].is<char*>() == false);
-  }
-
-  SECTION("ElementProxy::is<char>()") {
-    REQUIRE(doc["a"][1].is<char>() == true);
-    REQUIRE(doc["a"][0].is<char>() == false);
-  }
-}

+ 0 - 16
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

+ 0 - 38
src/ArduinoJson/Variant/JsonVariantConst.hpp

@@ -74,25 +74,6 @@ class JsonVariantConst : public VariantTag,
     return Converter<T>::fromJson(*this);
   }
 
-  // Deprecated: use as<const char*>() instead.
-  // https://arduinojson.org/v6/api/jsonvariantconst/as/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type
-  ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()")
-      as() const {
-    return as<const char*>();
-  }
-
-  // Deprecated: use as<int8_t>() or as<uint8_t>() instead.
-  // https://arduinojson.org/v6/api/jsonvariantconst/as/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char>::value, char>::type
-  ARDUINOJSON_DEPRECATED(
-      "Support for char is deprecated, use int8_t or uint8_t instead")
-      as() const {
-    return static_cast<char>(as<signed char>());
-  }
-
   // Returns true if the value is of the specified type.
   // https://arduinojson.org/v6/api/jsonvariantconst/is/
   template <typename T>
@@ -103,25 +84,6 @@ class JsonVariantConst : public VariantTag,
     return Converter<T>::checkJson(*this);
   }
 
-  // Deprecated: use is<const char*>() instead.
-  // https://arduinojson.org/v6/api/jsonvariantconst/is/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type
-  ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()")
-      is() const {
-    return is<const char*>();
-  }
-
-  // Deprecated: use is<int8_t>() or is<uint8_t>() instead.
-  // https://arduinojson.org/v6/api/jsonvariantconst/is/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char>::value, bool>::type
-  ARDUINOJSON_DEPRECATED(
-      "Support for char is deprecated, use int8_t or uint8_t instead")
-      is() const {
-    return is<signed char>();
-  }
-
   template <typename T>
   FORCE_INLINE operator T() const {
     return as<T>();

+ 0 - 6
src/ArduinoJson/Variant/VariantImpl.hpp

@@ -142,12 +142,6 @@ VariantRefBase<TDerived>::to() const {
   return *this;
 }
 
-// Out of class definition to avoid #1560
-template <typename TDerived>
-inline bool VariantRefBase<TDerived>::set(char value) const {
-  return set(static_cast<signed char>(value));
-}
-
 template <typename TDerived>
 inline void convertToJson(const VariantRefBase<TDerived>& src,
                           JsonVariant dst) {

+ 0 - 44
src/ArduinoJson/Variant/VariantRefBase.hpp

@@ -62,25 +62,6 @@ class VariantRefBase : public VariantTag {
     return Converter<T>::fromJson(getVariant());
   }
 
-  // Deprecated: use as<const char*>() instead.
-  // https://arduinojson.org/v6/api/jsonvariant/as/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char*>::value, const char*>::type
-  ARDUINOJSON_DEPRECATED("Replace as<char*>() with as<const char*>()")
-      as() const {
-    return as<const char*>();
-  }
-
-  // Deprecated: use as<int8_t>() or as<uint8_t>() instead.
-  // https://arduinojson.org/v6/api/jsonvariant/as/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char>::value, char>::type
-  ARDUINOJSON_DEPRECATED(
-      "Support for char is deprecated, use int8_t or uint8_t instead")
-      as() const {
-    return static_cast<char>(as<signed char>());
-  }
-
   template <typename T>
   FORCE_INLINE operator T() const {
     return as<T>();
@@ -126,25 +107,6 @@ class VariantRefBase : public VariantTag {
     return Converter<T>::checkJson(getVariantConst());
   }
 
-  // Deprecated: use is<const char*>() instead.
-  // https://arduinojson.org/v6/api/jsonvariant/is/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char*>::value, bool>::type
-  ARDUINOJSON_DEPRECATED("Replace is<char*>() with is<const char*>()")
-      is() const {
-    return is<const char*>();
-  }
-
-  // Deprecated: use is<int8_t>() or is<uint8_t>() instead.
-  // https://arduinojson.org/v6/api/jsonvariant/is/
-  template <typename T>
-  FORCE_INLINE typename enable_if<is_same<T, char>::value, bool>::type
-  ARDUINOJSON_DEPRECATED(
-      "Support for char is deprecated, use int8_t or uint8_t instead")
-      is() const {
-    return is<signed char>();
-  }
-
   // 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 {