sk_sp: fix contravariant constructors
TBR=reed
This is obviously correct and needs to be fixed.
Review URL: https://codereview.chromium.org/1771583002
diff --git a/tests/RefCntTest.cpp b/tests/RefCntTest.cpp
index 60a34ec..8914ccf 100644
--- a/tests/RefCntTest.cpp
+++ b/tests/RefCntTest.cpp
@@ -274,3 +274,19 @@
check(reporter, 1, 2, 1, 1);
}
+namespace {
+struct FooAbstract : public SkRefCnt {
+ virtual void f() = 0;
+};
+struct FooConcrete : public FooAbstract {
+ void f() override {}
+};
+}
+static sk_sp<FooAbstract> make_foo() {
+ // can not cast FooConcrete to FooAbstract.
+ // can cast FooConcrete* to FooAbstract*.
+ return sk_make_sp<FooConcrete>();
+}
+DEF_TEST(sk_make_sp, r) {
+ auto x = make_foo();
+}