// RUN: %clang_cc1 -triple x86_64-apple-macosx10.8.0 -fsyntax-only -verify %s

// This test case shows that 'availability' and 'deprecated' do not inherit
// when a property is redeclared in a subclass.  This is intentional.

@interface NSObject @end
@protocol myProtocol
@property int myProtocolProperty __attribute__((availability(macosx,introduced=10.7,deprecated=10.8))); // expected-note {{'myProtocolProperty' has been explicitly marked deprecated here}} \
                                                                                                        // expected-note {{property 'myProtocolProperty' is declared deprecated here}}
@end

@interface Foo : NSObject
@property int myProperty __attribute__((availability(macosx,introduced=10.7,deprecated=10.8)));  // expected-note 2 {{'myProperty' has been explicitly marked deprecated here}} \
								// expected-note {{property 'myProperty' is declared deprecated here}}
@end

@interface Bar : Foo <myProtocol>
@property int myProperty;
@property int myProtocolProperty;
@end

void test(Foo *y, Bar *x, id<myProtocol> z) {
  y.myProperty = 0; // expected-warning {{'myProperty' is deprecated: first deprecated in macOS 10.8}}
  (void)[y myProperty];   // expected-warning {{'myProperty' is deprecated: first deprecated in macOS 10.8}}

  x.myProperty = 1; // no-warning
  (void)[x myProperty]; // no-warning

  x.myProtocolProperty = 0; // no-warning

  (void)[x myProtocolProperty]; // no-warning
  (void)[z myProtocolProperty]; // expected-warning {{'myProtocolProperty' is deprecated: first deprecated in macOS 10.8}}
}
