URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [obj-c++.dg/] [template-8.mm] - Rev 703
Compare with Previous | Blame | View Log
/* Test that all pending instantiations have taken place before meta-datageneration. *//* Author: Fariborz Jahanian <fjahanian@apple.com> *//* Adapted by Nicola Pero <nicola.pero@meta-innovation.com> *//* { dg-do run } *//* { dg-skip-if "No API#2 pre-Darwin9" { *-*-darwin[5-8]* } { "-fnext-runtime" } { "" } } *//* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */#include <objc/objc.h>#include <objc/runtime.h>@interface MyRootClass{ Class isa; }+ (id) initialize;+ alloc;- init;- doSomething;@end@implementation MyRootClass+ (id) initialize { return self; }+ alloc { return class_createInstance (self, 0); }- init { return self; }- doSomething { return self; }@endclass Base{public:Base() { }virtual ~Base() { }void destroy() { delete this; }};template<class T>class Subclass : public T{public:Subclass() { }virtual ~Subclass(){[[[MyRootClass alloc] init] doSomething];}};int main(int argc, const char * argv[]){Subclass<Base>* theSubclass = new Subclass<Base>();theSubclass->destroy();return 0;}
