OSDN Git Service

2005-08-14 Andrew Pinski <pinskia@physics.uc.edu>
authorpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Aug 2005 01:13:39 +0000 (01:13 +0000)
committerpinskia <pinskia@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 15 Aug 2005 01:13:39 +0000 (01:13 +0000)
        * execute/exceptions/finally-1.m: Check that the catch and finally are
        being called.  Also add a "return 0;" at the end of main.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103098 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/objc/execute/exceptions/finally-1.m

index cc45585..65f56b9 100644 (file)
@@ -1,3 +1,8 @@
+2005-08-14  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * execute/exceptions/finally-1.m: Check that the catch and finally are
+       being called.  Also add a "return 0;" at the end of main.
+
 2005-08-14 Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/21432.
index 9d4c396..5f32de2 100644 (file)
@@ -1,45 +1,59 @@
 #include <objc/Object.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+static int made_try = 0;
 
 int
 thrower_try_body()
 {
-        printf("Thrower try body\n");
-        return (0);
+  made_try++;
+  return (0);
 }
 
+static int made_finally = 0;
+
 int
 finally_body()
 {
-        printf("Finally body\n");
-        return (0);
+  made_finally++;
+  return (0);
 }
 
 int
 thrower()
 {
-        @try
-        {
-                thrower_try_body();
-                @throw [Object new];
-        }
-        @finally
-        {
-                finally_body();
-        }       // <----- program aborts here.
-        return 0;
+  @try
+  {
+    thrower_try_body();
+    @throw [Object new];
+  }
+  @finally
+  {
+    finally_body();
+  }     
+  return 0;
 }
 
+static int made_catch = 0;
 
 int 
 main(int ac, char *av[])
 {
-        @try
-        {
-                thrower();
-        }
-        @catch (id exc)
-        {
-                printf("Got exception of class %s\n", [[exc class] name]);
-                [exc free];
-        }
+  @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;
 }