xref: /aosp_15_r20/external/clang/test/SemaObjC/duplicate-ivar-in-class-extension.m (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify %s
2*67e74705SXin Li
3*67e74705SXin Li@interface Root @end
4*67e74705SXin Li
5*67e74705SXin Li@interface SuperClass  : Root
6*67e74705SXin Li{
7*67e74705SXin Li  int iSuper;	// expected-note {{previous declaration is here}}
8*67e74705SXin Li}
9*67e74705SXin Li@end
10*67e74705SXin Li
11*67e74705SXin Li@interface SubClass : SuperClass {
12*67e74705SXin Li    int ivar;	// expected-error {{duplicate member 'ivar'}}
13*67e74705SXin Li    int another_ivar;	// expected-error {{duplicate member 'another_ivar'}}
14*67e74705SXin Li    int iSuper;	// expected-error {{duplicate member 'iSuper'}}
15*67e74705SXin Li}
16*67e74705SXin Li@end
17*67e74705SXin Li
18*67e74705SXin Li@interface SuperClass () {
19*67e74705SXin Li   int ivar;	// expected-note {{previous declaration is here}}
20*67e74705SXin Li}
21*67e74705SXin Li@end
22*67e74705SXin Li
23*67e74705SXin Li@interface Root () {
24*67e74705SXin Li  int another_ivar;	// expected-note {{previous declaration is here}}
25*67e74705SXin Li}
26*67e74705SXin Li@end
27*67e74705SXin Li
28*67e74705SXin Li@implementation SubClass
29*67e74705SXin Li-(int) method {
30*67e74705SXin Li        return self->ivar;  // would be ambiguous if the duplicate ivar were allowed
31*67e74705SXin Li}
32*67e74705SXin Li@end
33