/* Contributed by Nicola Pero <nicola.pero@meta-innovation.com>, October 2010.  */
/* { dg-do compile } */
#include <objc/objc.h>
@interface MyRootClass
{
  Class isa;
}
@end
@implementation MyRootClass
@end
@dynamic isa;  /* { dg-error ".@dynamic. not in @implementation context" } */
@interface Test : MyRootClass
{
  int v1;
}
@end
@implementation Test
@end
@interface Test (Category)
@property int v1;
@end
@implementation Test (Category)
@dynamic v1;
@end
@interface AnotherTest : MyRootClass
{
}
@property int one;
@end
@implementation AnotherTest
@dynamic one; /* { dg-line dynamic_one_first } */
@dynamic one; /* { dg-error "property .one. already specified in .@dynamic." } */
              /* { dg-message "originally specified here" "" { target *-*-* } dynamic_one_first } */
@dynamic three; /* { dg-error "no declaration of property .three. found in the interface" } */
@end