diff --git a/llvm/include/llvm/BinaryFormat/MsgPackDocument.h b/llvm/include/llvm/BinaryFormat/MsgPackDocument.h --- a/llvm/include/llvm/BinaryFormat/MsgPackDocument.h +++ b/llvm/include/llvm/BinaryFormat/MsgPackDocument.h @@ -181,6 +181,11 @@ return !(Lhs < Rhs) && !(Rhs < Lhs); } + /// Inequality operator + friend bool operator!=(const DocNode &Lhs, const DocNode &Rhs) { + return !(Lhs == Rhs); + } + /// Convert this node to a string, assuming it is scalar. std::string toString() const; diff --git a/llvm/unittests/BinaryFormat/MsgPackDocumentTest.cpp b/llvm/unittests/BinaryFormat/MsgPackDocumentTest.cpp --- a/llvm/unittests/BinaryFormat/MsgPackDocumentTest.cpp +++ b/llvm/unittests/BinaryFormat/MsgPackDocumentTest.cpp @@ -13,6 +13,16 @@ using namespace llvm; using namespace msgpack; +TEST(MsgPackDocument, DocNodeTest) { + Document Doc; + + DocNode Int1 = Doc.getNode(1), Int2 = Doc.getNode(2); + DocNode Str1 = Doc.getNode("ab"), Str2 = Doc.getNode("ab"); + + ASSERT_TRUE(Int1 != Int2); + ASSERT_TRUE(Str1 == Str2); +} + TEST(MsgPackDocument, TestReadInt) { Document Doc; bool Ok = Doc.readFromBlob(StringRef("\xd0\x00", 2), /*Multi=*/false);