aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m')
-rw-r--r--gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m60
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m b/gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m
new file mode 100644
index 000000000..30ec7b2d1
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/objc/execute/exceptions/finally-1.m
@@ -0,0 +1,60 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "../../../objc-obj-c++-shared/TestsuiteObject.m"
+
+static int made_try = 0;
+
+int
+thrower_try_body()
+{
+ made_try++;
+ return (0);
+}
+
+static int made_finally = 0;
+
+int
+finally_body()
+{
+ made_finally++;
+ return (0);
+}
+
+int
+thrower()
+{
+ @try
+ {
+ thrower_try_body();
+ @throw [TestsuiteObject new];
+ }
+ @finally
+ {
+ finally_body();
+ }
+ return 0;
+}
+
+static int made_catch = 0;
+
+int
+main(int ac, char *av[])
+{
+ @try
+ {
+ thrower();
+ }
+ @catch (id exc)
+ {
+ made_catch++;
+ [exc free];
+ }
+ if (made_try != 1)
+ abort ();
+ if (made_finally != 1)
+ abort ();
+ if (made_catch != 1)
+ abort ();
+ return 0;
+}
+