/* APPLE LOCAL file mainline */
/* Check for warnings about missing [super dealloc] calls.  */
/* Author: Ziemowit Laski <zlaski@apple.com>  */

/* { dg-do compile } */

@interface Foo {
  void *isa;
}
- (void) dealloc;
- (void) some_other;
@end

@interface Bar: Foo {
  void *casa;
}
- (void) dealloc;
@end

@interface Baz: Bar {
  void *usa;
}
- (void) dealloc;
@end

@implementation Foo
- (void) dealloc {
  isa = 0;   /* Should not warn here.  */
}
- (void) some_other {
  isa = (void *)-1;
}
@end

@implementation Bar
- (void) dealloc {
  casa = 0;
  [super some_other];
}  /* { dg-warning "method possibly missing a .super dealloc. call" } */
@end

@implementation Baz
- (void) dealloc {
  usa = 0;
  [super dealloc];  /* Should not warn here.  */
}
@end
