OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.2.2/] [gcc/] [testsuite/] [objc/] [execute/] [exceptions/] [catchall-1.m] - Diff between revs 149 and 154

Only display areas with differences | Details | Blame | View Log

Rev 149 Rev 154
/* Test out '@catch(id foo) {...}', which should catch all uncaught
/* Test out '@catch(id foo) {...}', which should catch all uncaught
   exceptions.  */
   exceptions.  */
/* Developed by Ziemowit Laski <zlaski@apple.com>.  */
/* Developed by Ziemowit Laski <zlaski@apple.com>.  */
 
 
#include <objc/Object.h>
#include <objc/Object.h>
#include <stdio.h>
#include <stdio.h>
 
 
/* The following is not required in actual user code; we include it
/* The following is not required in actual user code; we include it
   here to check that the compiler generates an internal definition of
   here to check that the compiler generates an internal definition of
   _setjmp that is consistent with what <setjmp.h> provides.  */
   _setjmp that is consistent with what <setjmp.h> provides.  */
#include <setjmp.h>
#include <setjmp.h>
 
 
extern void abort(void);
extern void abort(void);
#define CHECK_IF(expr) if(!(expr)) abort()
#define CHECK_IF(expr) if(!(expr)) abort()
 
 
@interface Frob: Object
@interface Frob: Object
@end
@end
 
 
@implementation Frob: Object
@implementation Frob: Object
@end
@end
 
 
static Frob* _connection = nil;
static Frob* _connection = nil;
 
 
//--------------------------------------------------------------------
//--------------------------------------------------------------------
 
 
 
 
void test (Object* sendPort)
void test (Object* sendPort)
{
{
        int cleanupPorts = 1;
        int cleanupPorts = 1;
        Frob* receivePort = nil;
        Frob* receivePort = nil;
 
 
        @try {
        @try {
                printf ("receivePort = %p\n", receivePort);
                printf ("receivePort = %p\n", receivePort);
                printf ("sendPort = %p\n", sendPort);
                printf ("sendPort = %p\n", sendPort);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("---\n");
                printf ("---\n");
 
 
                receivePort = (Frob *) -1;
                receivePort = (Frob *) -1;
                _connection = (Frob *) -1;
                _connection = (Frob *) -1;
                printf ("receivePort = %p\n", receivePort);
                printf ("receivePort = %p\n", receivePort);
                printf ("sendPort = %p\n", sendPort);
                printf ("sendPort = %p\n", sendPort);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("---\n");
                printf ("---\n");
 
 
                receivePort = nil;
                receivePort = nil;
                sendPort = nil;
                sendPort = nil;
                cleanupPorts = 0;
                cleanupPorts = 0;
 
 
                printf ("receivePort = %p\n", receivePort);
                printf ("receivePort = %p\n", receivePort);
                printf ("sendPort = %p\n", sendPort);
                printf ("sendPort = %p\n", sendPort);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("cleanupPorts = %d\n", cleanupPorts);
                printf ("---\n");
                printf ("---\n");
 
 
                @throw [Object new];
                @throw [Object new];
        }
        }
        @catch(Frob *obj) {
        @catch(Frob *obj) {
                printf ("Exception caught by incorrect handler!\n");
                printf ("Exception caught by incorrect handler!\n");
                CHECK_IF(0);
                CHECK_IF(0);
        }
        }
        @catch(id exc) {
        @catch(id exc) {
                printf ("Exception caught by correct handler.\n");
                printf ("Exception caught by correct handler.\n");
                printf ("receivePort = %p (expected 0x0)\n", receivePort);
                printf ("receivePort = %p (expected 0x0)\n", receivePort);
                printf ("sendPort = %p (expected 0x0)\n", sendPort);
                printf ("sendPort = %p (expected 0x0)\n", sendPort);
                printf ("cleanupPorts = %d (expected 0)\n", cleanupPorts);
                printf ("cleanupPorts = %d (expected 0)\n", cleanupPorts);
                printf ("---");
                printf ("---");
                CHECK_IF(!receivePort);
                CHECK_IF(!receivePort);
                CHECK_IF(!sendPort);
                CHECK_IF(!sendPort);
                CHECK_IF(!cleanupPorts);
                CHECK_IF(!cleanupPorts);
        }
        }
}
}
 
 
int main (void) {
int main (void) {
 
 
        test((Object *)-1);
        test((Object *)-1);
        return 0;
        return 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.