mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
Add the critically missing 'clone' method. =]
Clang managed to never instantiate the copy constructor. Added tests to ensure this path is tested. We could still use tests for the polymorphic nature. Those coming up next. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194317 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
cd7a191d8a
commit
ca020d469e
@ -17,9 +17,13 @@ namespace {
|
||||
|
||||
struct S {
|
||||
S(int x) : x(x) {}
|
||||
S *clone() { return new S(*this); }
|
||||
int x;
|
||||
};
|
||||
|
||||
// A function that forces the return of a copy.
|
||||
polymorphic_ptr<S> dummy_copy(const polymorphic_ptr<S> &arg) { return arg; }
|
||||
|
||||
TEST(polymorphic_ptr_test, Basic) {
|
||||
polymorphic_ptr<S> null;
|
||||
EXPECT_FALSE((bool)null);
|
||||
@ -66,6 +70,13 @@ TEST(polymorphic_ptr_test, Basic) {
|
||||
EXPECT_EQ(s, &*p);
|
||||
EXPECT_FALSE((bool)p2);
|
||||
EXPECT_TRUE(!p2);
|
||||
|
||||
// Force copies and that everything survives.
|
||||
polymorphic_ptr<S> p3 = dummy_copy(polymorphic_ptr<S>(p));
|
||||
EXPECT_TRUE((bool)p3);
|
||||
EXPECT_FALSE(!p3);
|
||||
EXPECT_NE(s, &*p3);
|
||||
EXPECT_EQ(42, p3->x);
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user