From: Tom Jackson Date: Tue, 30 Apr 2013 01:46:29 +0000 (-0700) Subject: Making from(dynamic.items()) work X-Git-Tag: v0.22.0~992 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=517718730d0502017cdc520989d2b9244a66506b;p=folly.git Making from(dynamic.items()) work Summary: It was broken because the `dynamic`'s iterator wasn't complete. Test Plan: Unit test Reviewed By: jbrewer@fb.com FB internal diff: D793618 --- diff --git a/folly/dynamic-inl.h b/folly/dynamic-inl.h index 92cd67ef..95d672af 100644 --- a/folly/dynamic-inl.h +++ b/folly/dynamic-inl.h @@ -325,6 +325,7 @@ inline dynamic::const_iterator dynamic::end() const { template struct dynamic::IterableProxy { typedef It const_iterator; + typedef typename It::value_type value_type; /* implicit */ IterableProxy(const dynamic::ObjectImpl* o) : o_(o) { } diff --git a/folly/experimental/Gen.h b/folly/experimental/Gen.h index 9baae833..0946c0f3 100644 --- a/folly/experimental/Gen.h +++ b/folly/experimental/Gen.h @@ -299,7 +299,7 @@ From from(std::initializer_list source) { template> + Container>> From from(Container&& source) { return From(std::move(source)); } diff --git a/folly/experimental/test/GenTest.cpp b/folly/experimental/test/GenTest.cpp index 7b6d22b3..d5a05ea5 100644 --- a/folly/experimental/test/GenTest.cpp +++ b/folly/experimental/test/GenTest.cpp @@ -664,6 +664,14 @@ TEST(Gen, Dynamic) { EXPECT_EQ(dynamic(5), from(array3) | rconcat | rconcat | sum); } +TEST(Gen, DynamicObject) { + const dynamic obj = dynamic::object(1, 2)(3, 4); + EXPECT_EQ(dynamic(4), from(obj.keys()) | sum); + EXPECT_EQ(dynamic(6), from(obj.values()) | sum); + EXPECT_EQ(dynamic(4), from(obj.items()) | get<0>() | sum); + EXPECT_EQ(dynamic(6), from(obj.items()) | get<1>() | sum); +} + TEST(StringGen, EmptySplit) { auto collect = eachTo() | as(); {