Bug 1296760 - Add TestBasePointerCoersion for Maybe. - r=waldo draft
authorJeff Gilbert <jgilbert@mozilla.com>
Fri, 19 Aug 2016 21:26:05 -0700
changeset 403588 3582780f83c8766adbe0585600c0923589f9bd1a
parent 403587 f4a0a65912ac544812affce3dab2e4fee620cf73
child 528945 93bec5c5056f1e7b4ed74a2ddde957b739c907ef
push id26953
push userbmo:jgilbert@mozilla.com
push dateSat, 20 Aug 2016 04:26:37 +0000
reviewerswaldo
bugs1296760
milestone51.0a1
Bug 1296760 - Add TestBasePointerCoersion for Maybe. - r=waldo MozReview-Commit-ID: 38zvz12ZAhZ
mfbt/tests/TestMaybe.cpp
--- a/mfbt/tests/TestMaybe.cpp
+++ b/mfbt/tests/TestMaybe.cpp
@@ -762,18 +762,16 @@ TestVirtualFunction() {
 }
 
 static Maybe<int*>
 ReturnSomeNullptr()
 {
   return Some(nullptr);
 }
 
-
-
 static bool
 TestSomeNullptrConversion()
 {
   Maybe<int*> m1 = Some(nullptr);
   MOZ_RELEASE_ASSERT(m1.isSome());
   MOZ_RELEASE_ASSERT(m1);
   MOZ_RELEASE_ASSERT(!*m1);
 
@@ -785,23 +783,35 @@ TestSomeNullptrConversion()
   Maybe<decltype(nullptr)> m3 = Some(nullptr);
   MOZ_RELEASE_ASSERT(m3.isSome());
   MOZ_RELEASE_ASSERT(m3);
   MOZ_RELEASE_ASSERT(*m3 == nullptr);
 
   return true;
 }
 
+static bool
+TestBasePointerCoersion()
+{
+  MyDerivedClass foo;
+  const auto fnFoo = [&]() -> Maybe<MySuperClass*> {
+    return Some(&foo);
+  }
+  const auto bar = fnFoo();
+  return true;
+}
+
 int
 main()
 {
   RUN_TEST(TestBasicFeatures);
   RUN_TEST(TestCopyAndMove);
   RUN_TEST(TestFunctionalAccessors);
   RUN_TEST(TestApply);
   RUN_TEST(TestMap);
   RUN_TEST(TestToMaybe);
   RUN_TEST(TestComparisonOperators);
   RUN_TEST(TestVirtualFunction);
   RUN_TEST(TestSomeNullptrConversion);
+  RUN_TEST(TestBasePointerCoersion);
 
   return 0;
 }