summaryrefslogtreecommitdiff
path: root/gcc/testsuite/obj-c++.dg/isa-field-1.mm
blob: 4b93df8c485554389b89b2da680ff958a12ad03f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
/* Ensure there are no bizarre difficulties with accessing the 'isa' field of
  objects.  This field is named differently between GNU and NeXT runtimes so
  accessed via the CLASSPTRFIELD() macro defined in next-mapping.h */
/* { dg-do compile } */

#include "../objc-obj-c++-shared/Object1.h"
#include "../objc-obj-c++-shared/next-mapping.h"

@interface Object (Test)
- (Class) test1: (id)object;
@end

@interface Derived: Object
- (Class) test2: (id)object;
@end

@implementation Object (Test)

Class test1(id object) {
  Class cls = CLASSPTRFIELD(object);
  return cls;
}
- (Class) test1: (id)object {
  Class cls = CLASSPTRFIELD(object);
  return cls;
}

@end

@implementation Derived

Class test2(id object) {
  Class cls = CLASSPTRFIELD(object);
  return cls;
}
- (Class) test2: (id)object {
  Class cls = CLASSPTRFIELD(object);
  return cls;
}

@end

Class test3(id object) {
  Class cls = CLASSPTRFIELD(object);
  return cls;
}
#include "../objc-obj-c++-shared/Object1-implementation.h"