// RUN: %clang_cc1 -fsyntax-only -fobjc-nonfragile-abi2 -verify %s

@interface Root @end

@interface SuperClass  : Root 
{
  int iSuper;	// expected-note {{previous declaration is here}}
}
@end

@interface SubClass : SuperClass {
    int ivar;	// expected-error {{duplicate member 'ivar'}}
    int another_ivar;	// expected-error {{duplicate member 'another_ivar'}}
    int iSuper;	// expected-error {{duplicate member 'iSuper'}}
}
@end

@interface SuperClass () {
   int ivar;	// expected-note {{previous declaration is here}}
}
@end

@interface Root () {
  int another_ivar;	// expected-note {{previous declaration is here}}
}
@end

@implementation SubClass
-(int) method {
        return self->ivar;  // would be ambiguous if the duplicate ivar were allowed
}
@end
