From 309b0e4232a331e7293d6086cef1573201a10507 Mon Sep 17 00:00:00 2001 From: Andrew Pinski Date: Mon, 15 Aug 2005 01:13:39 +0000 Subject: [PATCH] finally-1.m: Check that the catch and finally are being called. 2005-08-14 Andrew Pinski * execute/exceptions/finally-1.m: Check that the catch and finally are being called. Also add a "return 0;" at the end of main. From-SVN: r103098 --- gcc/testsuite/ChangeLog | 5 ++ .../objc/execute/exceptions/finally-1.m | 60 ++++++++++++------- 2 files changed, 42 insertions(+), 23 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index cc45585659f..65f56b9ee04 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-08-14 Andrew Pinski + + * 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 PR fortran/21432. diff --git a/gcc/testsuite/objc/execute/exceptions/finally-1.m b/gcc/testsuite/objc/execute/exceptions/finally-1.m index 9d4c396393e..5f32de2b4e1 100644 --- a/gcc/testsuite/objc/execute/exceptions/finally-1.m +++ b/gcc/testsuite/objc/execute/exceptions/finally-1.m @@ -1,45 +1,59 @@ #include +#include +#include + +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; }