summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaCXX/new-delete.cpp
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2011-07-26 22:25:31 +0000
committerEli Friedman <eli.friedman@gmail.com>2011-07-26 22:25:31 +0000
commitae4280f7210a978887a17bc3e669b1fbb09b35f5 (patch)
treeadbe7365dc65809fdc78cee256d9222d59f7b46d /clang/test/SemaCXX/new-delete.cpp
parentaee57b4948b426cb7cdb18cfcc2caed5570fe23a (diff)
downloadbcm5719-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.cpp12
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}}
+}
OpenPOWER on IntegriCloud