diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-07-26 22:25:31 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-07-26 22:25:31 +0000 |
commit | ae4280f7210a978887a17bc3e669b1fbb09b35f5 (patch) | |
tree | adbe7365dc65809fdc78cee256d9222d59f7b46d /clang/test/SemaCXX/new-delete.cpp | |
parent | aee57b4948b426cb7cdb18cfcc2caed5570fe23a (diff) | |
download | bcm5719-llvm-ae4280f7210a978887a17bc3e669b1fbb09b35f5.tar.gz bcm5719-llvm-ae4280f7210a978887a17bc3e669b1fbb09b35f5.zip |
A couple minor issues with Sema for delete:
1. Attempting to delete an expression of incomplete class type should be an error, not a warning.
2. If someone tries to delete a pointer to an incomplete class type, make sure we actually emit
the delete expression after we warn.
llvm-svn: 136161
Diffstat (limited to 'clang/test/SemaCXX/new-delete.cpp')
-rw-r--r-- | clang/test/SemaCXX/new-delete.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/new-delete.cpp b/clang/test/SemaCXX/new-delete.cpp index efdfa0f066d..850229c3200 100644 --- a/clang/test/SemaCXX/new-delete.cpp +++ b/clang/test/SemaCXX/new-delete.cpp @@ -397,3 +397,15 @@ namespace ArrayNewNeedsDtor { return new B[5]; // expected-note {{implicit default destructor for 'ArrayNewNeedsDtor::B' first required here}} } } + +namespace DeleteIncompleteClass { + struct A; // expected-note {{forward declaration}} + extern A x; + void f() { delete x; } // expected-error {{deleting incomplete class type}} +} + +namespace DeleteIncompleteClassPointerError { + struct A; // expected-note {{forward declaration}} + void f(A *x) { 1+delete x; } // expected-warning {{deleting pointer to incomplete type}} \ + // expected-error {{invalid operands to binary expression}} +} |