Title: [199987] releases/WebKitGTK/webkit-2.12
- Revision
- 199987
- Author
- [email protected]
- Date
- 2016-04-25 03:30:31 -0700 (Mon, 25 Apr 2016)
Log Message
Merge r199107 - Implement operator== and operator!= for Optional<>
https://bugs.webkit.org/show_bug.cgi?id=156266
Reviewed by Anders Carlsson.
Source/WTF:
Implement non-member operator== and operator!= variants for Optional<>.
* wtf/Optional.h:
(WTF::operator==):
(WTF::operator!=):
Tools:
* TestWebKitAPI/Tests/WTF/Optional.cpp:
(TestWebKitAPI::TEST):
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.12/Source/WTF/ChangeLog (199986 => 199987)
--- releases/WebKitGTK/webkit-2.12/Source/WTF/ChangeLog 2016-04-25 10:26:53 UTC (rev 199986)
+++ releases/WebKitGTK/webkit-2.12/Source/WTF/ChangeLog 2016-04-25 10:30:31 UTC (rev 199987)
@@ -1,3 +1,16 @@
+2016-04-05 Simon Fraser <[email protected]>
+
+ Implement operator== and operator!= for Optional<>
+ https://bugs.webkit.org/show_bug.cgi?id=156266
+
+ Reviewed by Anders Carlsson.
+
+ Implement non-member operator== and operator!= variants for Optional<>.
+
+ * wtf/Optional.h:
+ (WTF::operator==):
+ (WTF::operator!=):
+
2016-04-12 Tomas Popela <[email protected]>
S390X and PPC64 architectures detection is wrong
Modified: releases/WebKitGTK/webkit-2.12/Source/WTF/wtf/Optional.h (199986 => 199987)
--- releases/WebKitGTK/webkit-2.12/Source/WTF/wtf/Optional.h 2016-04-25 10:26:53 UTC (rev 199986)
+++ releases/WebKitGTK/webkit-2.12/Source/WTF/wtf/Optional.h 2016-04-25 10:30:31 UTC (rev 199987)
@@ -197,6 +197,66 @@
};
template<typename T>
+constexpr bool operator==(const Optional<T>& lhs, const Optional<T>& rhs)
+{
+ return static_cast<bool>(lhs) == static_cast<bool>(rhs) && (!static_cast<bool>(lhs) || lhs.value() == rhs.value());
+}
+
+template<typename T>
+constexpr bool operator!=(const Optional<T>& lhs, const Optional<T>& rhs)
+{
+ return !(lhs == rhs);
+}
+
+template<typename T>
+constexpr bool operator==(const Optional<T>& opt, NulloptTag)
+{
+ return !opt;
+}
+
+template<typename T>
+constexpr bool operator!=(const Optional<T>& opt, NulloptTag)
+{
+ return static_cast<bool>(opt);
+}
+
+template<typename T>
+constexpr bool operator==(NulloptTag, const Optional<T>& opt)
+{
+ return !opt;
+}
+
+template<typename T>
+constexpr bool operator!=(NulloptTag, const Optional<T>& opt)
+{
+ return static_cast<bool>(opt);
+}
+
+template<typename T>
+constexpr bool operator==(const Optional<T>& opt, const T& value)
+{
+ return opt && opt.value() == value;
+}
+
+template<typename T>
+constexpr bool operator!=(const Optional<T>& opt, const T& value)
+{
+ return !(opt == value);
+}
+
+template<typename T>
+constexpr bool operator==(const T& value, const Optional<T>& opt)
+{
+ return opt && opt.value() == value;
+}
+
+template<typename T>
+constexpr bool operator!=(const T& value, const Optional<T>& opt)
+{
+ return !(value == opt);
+}
+
+template<typename T>
Optional<typename std::decay<T>::type>
makeOptional(T&& value)
{
Modified: releases/WebKitGTK/webkit-2.12/Tools/ChangeLog (199986 => 199987)
--- releases/WebKitGTK/webkit-2.12/Tools/ChangeLog 2016-04-25 10:26:53 UTC (rev 199986)
+++ releases/WebKitGTK/webkit-2.12/Tools/ChangeLog 2016-04-25 10:30:31 UTC (rev 199987)
@@ -1,3 +1,13 @@
+2016-04-05 Simon Fraser <[email protected]>
+
+ Implement operator== and operator!= for Optional<>
+ https://bugs.webkit.org/show_bug.cgi?id=156266
+
+ Reviewed by Anders Carlsson.
+
+ * TestWebKitAPI/Tests/WTF/Optional.cpp:
+ (TestWebKitAPI::TEST):
+
2016-04-01 Jiewen Tan <[email protected]>
WebKit should dispatchDidFailProvisionalLoad while loading invalid URLs
Modified: releases/WebKitGTK/webkit-2.12/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp (199986 => 199987)
--- releases/WebKitGTK/webkit-2.12/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp 2016-04-25 10:26:53 UTC (rev 199986)
+++ releases/WebKitGTK/webkit-2.12/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp 2016-04-25 10:30:31 UTC (rev 199987)
@@ -93,4 +93,58 @@
EXPECT_EQ(result, 250);
}
+TEST(WTF_Optional, Equality)
+{
+ Optional<int> unengaged1;
+ Optional<int> unengaged2;
+
+ Optional<int> engaged1 { 1 };
+ Optional<int> engaged2 { 2 };
+ Optional<int> engagedx2 { 2 };
+
+ EXPECT_TRUE(unengaged1 == unengaged2);
+ EXPECT_FALSE(engaged1 == engaged2);
+ EXPECT_FALSE(engaged1 == unengaged1);
+ EXPECT_TRUE(engaged2 == engagedx2);
+
+ EXPECT_TRUE(unengaged1 == Nullopt);
+ EXPECT_FALSE(engaged1 == Nullopt);
+ EXPECT_TRUE(Nullopt == unengaged1);
+ EXPECT_FALSE(Nullopt == engaged1);
+
+ EXPECT_TRUE(engaged1 == 1);
+ EXPECT_TRUE(1 == engaged1);
+ EXPECT_FALSE(unengaged1 == 1);
+ EXPECT_FALSE(1 == unengaged1);
+}
+
+TEST(WTF_Optional, Inequality)
+{
+ Optional<int> unengaged1;
+ Optional<int> unengaged2;
+
+ Optional<int> engaged1 { 1 };
+ Optional<int> engaged2 { 2 };
+ Optional<int> engagedx2 { 2 };
+
+ EXPECT_FALSE(unengaged1 != unengaged2);
+ EXPECT_TRUE(engaged1 != engaged2);
+ EXPECT_TRUE(engaged1 != unengaged1);
+ EXPECT_FALSE(engaged2 != engagedx2);
+
+ EXPECT_FALSE(unengaged1 != Nullopt);
+ EXPECT_TRUE(engaged1 != Nullopt);
+ EXPECT_FALSE(Nullopt != unengaged1);
+ EXPECT_TRUE(Nullopt != engaged1);
+
+ EXPECT_FALSE(engaged1 != 1);
+ EXPECT_TRUE(engaged1 != 2);
+ EXPECT_FALSE(1 != engaged1);
+ EXPECT_TRUE(2 != engaged1);
+
+ EXPECT_TRUE(unengaged1 != 1);
+ EXPECT_TRUE(1 != unengaged1);
+}
+
+
} // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes