aboutsummaryrefslogtreecommitdiffstats
path: root/test/FrontendObjC
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2008-10-06 18:42:48 +0000
committerEvan Cheng <evan.cheng@apple.com>2008-10-06 18:42:48 +0000
commit9d0edb0b26f27487d7d86c339ec376223bd49faa (patch)
tree29dc8b9a8c496eaf68a3d0c7f0fbd977e7f82cdd /test/FrontendObjC
parentd3d8ce3aba85b40999eddbec3956f5b9534a36ff (diff)
downloadexternal_llvm-9d0edb0b26f27487d7d86c339ec376223bd49faa.zip
external_llvm-9d0edb0b26f27487d7d86c339ec376223bd49faa.tar.gz
external_llvm-9d0edb0b26f27487d7d86c339ec376223bd49faa.tar.bz2
This is an objective-c test, not an objective-c++ one.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57193 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/FrontendObjC')
-rw-r--r--test/FrontendObjC/2008-10-3-EhValue.mm50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/FrontendObjC/2008-10-3-EhValue.mm b/test/FrontendObjC/2008-10-3-EhValue.mm
new file mode 100644
index 0000000..a4c0cae
--- /dev/null
+++ b/test/FrontendObjC/2008-10-3-EhValue.mm
@@ -0,0 +1,50 @@
+// RUN: %llvmgcc -w -x objective-c -c %s -o /dev/null
+
+@interface Object {
+@public
+ Class isa;
+}
++initialize;
++alloc;
++new;
++free;
+-free;
++(Class)class;
+-(Class)class;
+-init;
+-superclass;
+-(const char *)name;
+@end
+
+@interface Frob: Object
+@end
+
+@implementation Frob: Object
+@end
+
+static Frob* _connection = ((void *)0);
+
+extern void abort(void);
+
+void test (Object* sendPort)
+{
+ int cleanupPorts = 1;
+ Frob* receivePort = ((void *)0);
+
+ @try {
+ receivePort = (Frob *) -1;
+ _connection = (Frob *) -1;
+ receivePort = ((void *)0);
+ sendPort = ((void *)0);
+ cleanupPorts = 0;
+ @throw [Object new];
+ }
+ @catch(Frob *obj) {
+ if(!(0)) abort();
+ }
+ @catch(id exc) {
+ if(!(!receivePort)) abort();
+ if(!(!sendPort)) abort();
+ if(!(!cleanupPorts)) abort();
+ }
+}