diff options
Diffstat (limited to 'gdb/testsuite/gdb.objc/basicclass.m')
-rw-r--r-- | gdb/testsuite/gdb.objc/basicclass.m | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.objc/basicclass.m b/gdb/testsuite/gdb.objc/basicclass.m new file mode 100644 index 00000000000..0de12db25a1 --- /dev/null +++ b/gdb/testsuite/gdb.objc/basicclass.m @@ -0,0 +1,81 @@ +#include <objc/Object.h> + +@interface BasicClass: Object +{ + id object; +} ++ newWithArg: arg; +- doIt; +- takeArg: arg; +- printHi; +- (int) printNumber: (int)number; +- (const char *) myDescription; +@end + +@interface BasicClass (Private) +- hiddenMethod; +@end + +@implementation BasicClass ++ newWithArg: arg +{ + id obj = [self new]; + [obj takeArg: arg]; + return obj; +} + +- doIt +{ + return self; +} + +- takeArg: arg +{ + object = arg; + [self hiddenMethod]; + return self; +} + +- printHi +{ + printf("Hi\n"); + return self; +} + +- (int) printNumber: (int)number +{ + printf("%d\n", number); + return number+1; +} + +- (const char *) myDescription +{ + return "BasicClass gdb test object"; +} + +@end + +@implementation BasicClass (Private) +- hiddenMethod +{ + return self; +} +@end + +int main (int argc, const char *argv[]) +{ + id obj; + obj = [BasicClass new]; + [obj takeArg: obj]; + return 0; +} + +const char *_NSPrintForDebugger(id object) +{ + /* This is not really what _NSPrintForDebugger should do, but it + is a simple test if gdb can call this function */ + if (object && [object respondsTo: @selector(myDescription)]) + return [object myDescription]; + + return NULL; +} |