Print null correctly
authorAlexey Spiridonov <lesha@fb.com>
Fri, 15 Jan 2016 20:53:27 +0000 (12:53 -0800)
committerfacebook-github-bot-1 <folly-bot@fb.com>
Fri, 15 Jan 2016 21:20:30 +0000 (13:20 -0800)
Summary: Null by itself was printing as 0, now it prints as null, which is consistent with the 'pseudo json' output.

Reviewed By: yfeldblum

Differential Revision: D2789284

fb-gh-sync-id: f318b8d0f8349f4b36f868c419842fb50bee9517

folly/dynamic-inl.h
folly/test/DynamicTest.cpp

index 8bdcf2f40f3c6b8fc4f013bedec1e879b3774e86..73ab5d37184e535c9b0e7e60b41b0d3508420c12 100644 (file)
@@ -728,6 +728,14 @@ struct dynamic::PrintImpl {
     out << t;
   }
 };
+// Otherwise, null, being (void*)0, would print as 0.
+template <>
+struct dynamic::PrintImpl<void*> {
+  static void print(dynamic const& d, std::ostream& out, void* const& nul) {
+    DCHECK_EQ((void*)0, nul);
+    out << "null";
+  }
+};
 template<>
 struct dynamic::PrintImpl<dynamic::ObjectImpl> {
   static void print(dynamic const& d,
index a065e14bd9e5b01ce2fcb4fc42d312106e3a4b4d..e7427190472a6b5d197b6a0900e425a3ca8f820f 100644 (file)
@@ -475,6 +475,12 @@ TEST(Dynamic, Brackets) {
   EXPECT_NE(ds, md["key1"]);
 }
 
+TEST(Dynamic, PrintNull) {
+  std::stringstream ss;
+  ss << folly::dynamic(nullptr);
+  EXPECT_EQ("null", ss.str());
+}
+
 int main(int argc, char** argv) {
   testing::InitGoogleTest(&argc, argv);
   gflags::ParseCommandLineFlags(&argc, &argv, true);