diff --git a/CHANGELOG.md b/CHANGELOG.md index 18a74a8e..a3272e1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ HEAD (ArduinoJson now produces standard UTF-8 instead of CESU-8) * Added `measureJson`, `measureJsonPretty`, and `measureMsgPack` to `keywords.txt` (This file is used for syntax highlighting in the Arduino IDE) +* Fixed `variant.is()` > ### BREAKING CHANGES > diff --git a/extras/tests/MixedConfiguration/cpp11.cpp b/extras/tests/MixedConfiguration/cpp11.cpp index 35472dfc..df81e35c 100644 --- a/extras/tests/MixedConfiguration/cpp11.cpp +++ b/extras/tests/MixedConfiguration/cpp11.cpp @@ -26,6 +26,14 @@ TEST_CASE("nullptr") { REQUIRE(variant.isNull()); } + + SECTION("JsonVariant.is()") { + variant.set(42); + REQUIRE(variant.is() == false); + + variant.clear(); + REQUIRE(variant.is() == true); + } } TEST_CASE("Issue #1120") { diff --git a/src/ArduinoJson/Variant/VariantRef.hpp b/src/ArduinoJson/Variant/VariantRef.hpp index 9ceab858..7ded4d39 100644 --- a/src/ArduinoJson/Variant/VariantRef.hpp +++ b/src/ArduinoJson/Variant/VariantRef.hpp @@ -91,6 +91,16 @@ class VariantRefBase { is() const { return variantIsObject(_data); } +#if ARDUINOJSON_HAS_NULLPTR + // + // bool is const; + template + FORCE_INLINE + typename enable_if::value, bool>::type + is() const { + return variantIsNull(_data); + } +#endif FORCE_INLINE bool isNull() const { return variantIsNull(_data);