// RUN: %clang_cc1 -fsyntax-only -Wdeprecated-implementations -verify -Wno-objc-root-class %s
// rdar://8973810
// rdar://12717705

@protocol P
- (void) D __attribute__((deprecated)); // expected-note {{method 'D' declared here}}
@end

@interface A <P>
+ (void)F __attribute__((deprecated));
@end

@interface A()
- (void) E __attribute__((deprecated));
@end

@implementation A
+ (void)F { }	// No warning, implementing its own deprecated method
- (void) D {} //  expected-warning {{Implementing deprecated method}}
- (void) E {} // No warning, implementing deprecated method in its class extension.
@end

@interface A(CAT)
- (void) G __attribute__((deprecated)); 
@end

@implementation A(CAT)
- (void) G {} 	// No warning, implementing its own deprecated method
@end

__attribute__((deprecated)) // expected-note 2 {{'CL' has been explicitly marked deprecated here}}
@interface CL // expected-note 2 {{class declared here}} 
@end

@implementation CL // expected-warning {{Implementing deprecated class}}
@end

@implementation CL ( SomeCategory ) // expected-warning {{'CL' is deprecated}} \
                                    // expected-warning {{Implementing deprecated category}}
@end

@interface CL_SUB : CL // expected-warning {{'CL' is deprecated}}
@end

@interface BASE
- (void) B __attribute__((deprecated)); // expected-note {{method 'B' declared here}}
@end

@interface SUB : BASE
@end

@implementation SUB
- (void) B {} // expected-warning {{Implementing deprecated method}}
@end

@interface Test
@end

@interface Test()
- (id)initSpecialInPrivateHeader __attribute__((deprecated));
@end

@implementation Test
- (id)initSpecialInPrivateHeader {
  return (void *)0;
}
@end

__attribute__((deprecated))
@interface Test(DeprecatedCategory) // expected-note {{category declared here}}
@end

@implementation Test(DeprecatedCategory) // expected-warning {{Implementing deprecated category}}
@end
