diff options
author | Raphael Isemann <teemperor@gmail.com> | 2019-08-29 09:39:33 +0000 |
---|---|---|
committer | Raphael Isemann <teemperor@gmail.com> | 2019-08-29 09:39:33 +0000 |
commit | a884a06c92b02d0429d8163f08ec579faf3733ad (patch) | |
tree | e81857c824e11e90fe6154260038c837cd7cc43c /lldb/packages/Python/lldbsuite/test | |
parent | 12f5c7f0c3b00c08c2f2a6cdfeb532ccb5cca6d7 (diff) | |
download | bcm5719-llvm-a884a06c92b02d0429d8163f08ec579faf3733ad.tar.gz bcm5719-llvm-a884a06c92b02d0429d8163f08ec579faf3733ad.zip |
[lldb][NFC] Also test operator new/new[]/delete/delete[]/comma/addr-of
llvm-svn: 370315
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp index e531ddaf738..892d0bae42a 100644 --- a/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp +++ b/lldb/packages/Python/lldbsuite/test/lang/cpp/operators/main.cpp @@ -1,8 +1,13 @@ #include <cstdlib> +int side_effect = 0; + struct B { int dummy = 2324; }; struct C { void *operator new(size_t size) { C* r = ::new C; r->custom_new = true; return r; } + void *operator new[](size_t size) { C* r = static_cast<C*>(std::malloc(size)); r->custom_new = true; return r; } + void operator delete(void *p) { std::free(p); side_effect = 1; } + void operator delete[](void *p) { std::free(p); side_effect = 2; } bool custom_new = false; B b; @@ -48,6 +53,9 @@ struct C { int operator>=(int) { return 87; } int operator>>=(int) { return 88; } + int operator,(int) { return 2012; } + int operator&() { return 2013; } + int operator()(int) { return 91; } int operator[](int) { return 92; } @@ -104,6 +112,9 @@ int main(int argc, char **argv) { result += c>=2; result += c>>=2; + result += (c , 2); + result += &c; + result += c(1); result += c[1]; @@ -113,6 +124,7 @@ int main(int argc, char **argv) { result += c.operatornew(); C *c2 = new C(); + C *c3 = new C[3]; //% self.expect("expr c->dummy", endstr=" 2324\n") //% self.expect("expr c->*2", endstr=" 2\n") @@ -151,6 +163,8 @@ int main(int argc, char **argv) { //% self.expect("expr c>>1", endstr=" 86\n") //% self.expect("expr c>=1", endstr=" 87\n") //% self.expect("expr c>>=1", endstr=" 88\n") + //% self.expect("expr c,1", endstr=" 2012\n") + //% self.expect("expr &c", endstr=" 2013\n") //% self.expect("expr c(1)", endstr=" 91\n") //% self.expect("expr c[1]", endstr=" 92\n") //% self.expect("expr static_cast<int>(c)", endstr=" 11\n") @@ -158,6 +172,10 @@ int main(int argc, char **argv) { //% self.expect("expr c.operatorint()", endstr=" 13\n") //% self.expect("expr c.operatornew()", endstr=" 14\n") //% self.expect("expr (new C)->custom_new", endstr=" true\n") + //% self.expect("expr (new struct C[1])->custom_new", endstr=" true\n") + //% self.expect("expr delete c2; side_effect", endstr=" = 1\n") + //% self.expect("expr delete[] c3; side_effect", endstr=" = 2\n") delete c2; + delete[] c3; return 0; } |