add missing const to fix `folly::toDynamic` on `std::vector<bool>`
authorMathieu Baudet <mathieubaudet@fb.com>
Thu, 11 May 2017 02:05:01 +0000 (19:05 -0700)
committerFacebook Github Bot <facebook-github-bot@users.noreply.github.com>
Thu, 11 May 2017 02:20:10 +0000 (19:20 -0700)
Summary: [folly] add missing const to fix `folly::toDynamic` on `std::vector<bool>`

Reviewed By: ender-wieczorek, yfeldblum

Differential Revision: D5039403

fbshipit-source-id: edd052c7d1d832d424166cba15fcd9f4f8bd219c

folly/DynamicConverter.h
folly/test/DynamicConverterTest.cpp

index 9ab4f73ac324b3befc8d2395136ac4e308b08a57..e569f641b04357ede7dad796de156e8c95cf9b8a 100644 (file)
@@ -317,7 +317,7 @@ struct DynamicConstructor<
         dynamicconverter_detail::is_map<C>::value>::type> {
   static dynamic construct(const C& x) {
     dynamic d = dynamic::object;
         dynamicconverter_detail::is_map<C>::value>::type> {
   static dynamic construct(const C& x) {
     dynamic d = dynamic::object;
-    for (auto& pair : x) {
+    for (const auto& pair : x) {
       d.insert(toDynamic(pair.first), toDynamic(pair.second));
     }
     return d;
       d.insert(toDynamic(pair.first), toDynamic(pair.second));
     }
     return d;
@@ -335,7 +335,7 @@ struct DynamicConstructor<
         dynamicconverter_detail::is_range<C>::value>::type> {
   static dynamic construct(const C& x) {
     dynamic d = dynamic::array;
         dynamicconverter_detail::is_range<C>::value>::type> {
   static dynamic construct(const C& x) {
     dynamic d = dynamic::array;
-    for (auto& item : x) {
+    for (const auto& item : x) {
       d.push_back(toDynamic(item));
     }
     return d;
       d.push_back(toDynamic(item));
     }
     return d;
index 152eba72b8db73720d6caf34e43f09d16d241ddc..042d1694128fc0259dd3b64eee54035b227fb493 100644 (file)
@@ -382,6 +382,12 @@ TEST(DynamicConverter, construct) {
                                dynamic::array(3, 4, 5));
     EXPECT_EQ(d, toDynamic(c));
   }
                                dynamic::array(3, 4, 5));
     EXPECT_EQ(d, toDynamic(c));
   }
+
+  {
+    vector<bool> vb{true, false};
+    dynamic d = dynamic::array(true, false);
+    EXPECT_EQ(d, toDynamic(vb));
+  }
 }
 
 TEST(DynamicConverter, errors) {
 }
 
 TEST(DynamicConverter, errors) {