1/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, November 2010. */ 2/* { dg-do run } */ 3/* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ 4 5/* Test dot-syntax with 'super'. */ 6 7#include <stdlib.h> 8#include <objc/objc.h> 9#include <objc/runtime.h> 10 11static int c; 12 13@interface MyRootClass 14{ 15 Class isa; 16 int a; 17} 18+ (id) initialize; 19+ (id) alloc; 20- (id) init; 21- (int) count; 22- (void) setCount: (int)count; 23+ (int) classCount; 24+ (void) setClassCount: (int)count; 25@end 26 27@implementation MyRootClass 28+ (id) initialize { return self; } 29+ (id) alloc { return class_createInstance (self, 0); } 30- (id) init { return self; } 31- (int) count 32{ 33 return a; 34} 35- (void) setCount: (int)count 36{ 37 a = count; 38} 39+ (int) classCount 40{ 41 return c; 42} 43+ (void) setClassCount: (int)count 44{ 45 c = count; 46} 47@end 48 49@interface MySubClass : MyRootClass 50+ (int) testMe; 51- (int) testMe; 52@end 53 54@implementation MySubClass 55- (int) testMe 56{ 57 super.count = 400; 58 if (super.count != 400) 59 abort (); 60 61 return super.count; 62} 63+ (int) testMe 64{ 65 super.classCount = 4000; 66 if (super.classCount != 4000) 67 abort (); 68 69 return super.classCount; 70} 71@end 72 73int main (void) 74{ 75 MySubClass *object = [[MySubClass alloc] init]; 76 77 if ([object testMe] != 400) 78 abort (); 79 80 if ([MySubClass testMe] != 4000) 81 abort (); 82 83 return 0; 84} 85 86 87