diff options
Diffstat (limited to 'llvm')
-rw-r--r-- | llvm/include/llvm/Support/JSON.h | 4 | ||||
-rw-r--r-- | llvm/unittests/Support/JSONTest.cpp | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/llvm/include/llvm/Support/JSON.h b/llvm/include/llvm/Support/JSON.h index 2fc0e7ddb90..7a04fd52bc5 100644 --- a/llvm/include/llvm/Support/JSON.h +++ b/llvm/include/llvm/Support/JSON.h @@ -294,9 +294,13 @@ public: Value(json::Array &&Elements) : Type(T_Array) { create<json::Array>(std::move(Elements)); } + template <typename Elt> + Value(const std::vector<Elt> &C) : Value(json::Array(C)) {} Value(json::Object &&Properties) : Type(T_Object) { create<json::Object>(std::move(Properties)); } + template <typename Elt> + Value(const std::map<std::string, Elt> &C) : Value(json::Object(C)) {} // Strings: types with value semantics. Must be valid UTF-8. Value(std::string V) : Type(T_String) { if (LLVM_UNLIKELY(!isUTF8(V))) { diff --git a/llvm/unittests/Support/JSONTest.cpp b/llvm/unittests/Support/JSONTest.cpp index 64a2bb97bd8..9f2d47b9aa9 100644 --- a/llvm/unittests/Support/JSONTest.cpp +++ b/llvm/unittests/Support/JSONTest.cpp @@ -47,6 +47,8 @@ TEST(JSONTest, Constructors) { s(Object{{"A", Object{{"B", Object{{"X", "Y"}}}}}})); EXPECT_EQ("null", s(llvm::Optional<double>())); EXPECT_EQ("2.5", s(llvm::Optional<double>(2.5))); + EXPECT_EQ("[[2.5,null]]", s(std::vector<std::vector<llvm::Optional<double>>>{ + {2.5, llvm::None}})); } TEST(JSONTest, StringOwnership) { |