Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(964)

Unified Diff: base/memory/ref_counted_unittest.cc

Issue 1904603002: Fix scoped_refptr copy/move-conversion overload resolution (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: remove dummy type name Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/memory/ref_counted.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/ref_counted_unittest.cc
diff --git a/base/memory/ref_counted_unittest.cc b/base/memory/ref_counted_unittest.cc
index 3f56b4a1c0b19c74ede34c5b53b67b902a3788e2..54f62cf4cc579cf0525b23386956144a7753ba09 100644
--- a/base/memory/ref_counted_unittest.cc
+++ b/base/memory/ref_counted_unittest.cc
@@ -105,6 +105,22 @@ class ScopedRefPtrCountDerived : public ScopedRefPtrCountBase {
int ScopedRefPtrCountDerived::constructor_count_ = 0;
int ScopedRefPtrCountDerived::destructor_count_ = 0;
+class Other : public base::RefCounted<Other> {
+ private:
+ friend class base::RefCounted<Other>;
+
+ ~Other() {}
+};
+
+scoped_refptr<Other> Overloaded(scoped_refptr<Other> other) {
+ return other;
+}
+
+scoped_refptr<SelfAssign> Overloaded(scoped_refptr<SelfAssign> self_assign) {
+ return self_assign;
+}
+
+
} // end namespace
TEST(RefCountedUnitTest, TestSelfAssignment) {
@@ -461,3 +477,21 @@ TEST(RefCountedUnitTest, MoveConstructorDerived) {
EXPECT_EQ(1, ScopedRefPtrCountDerived::destructor_count());
}
+TEST(RefCountedUnitTest, TestOverloadResolutionCopy) {
+ scoped_refptr<Derived> derived(new Derived);
+ scoped_refptr<SelfAssign> expected(derived);
+ EXPECT_EQ(expected, Overloaded(derived));
+
+ scoped_refptr<Other> other(new Other);
+ EXPECT_EQ(other, Overloaded(other));
+}
+
+TEST(RefCountedUnitTest, TestOverloadResolutionMove) {
+ scoped_refptr<Derived> derived(new Derived);
+ scoped_refptr<SelfAssign> expected(derived);
+ EXPECT_EQ(expected, Overloaded(std::move(derived)));
+
+ scoped_refptr<Other> other(new Other);
+ scoped_refptr<Other> other2(other);
+ EXPECT_EQ(other2, Overloaded(std::move(other)));
+}
« no previous file with comments | « base/memory/ref_counted.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698