blob: 30740f162e5b1a69745a71706df998eaaa68a11d [file] [log] [blame]
/* APPLE LOCAL file 4548636 */
/* Check for a variety of rules for objc's class attributes. */
/* APPLE LOCAL radar 4899595 */
/* { dg-options "-Wno-objc-root-class -mmacosx-version-min=10.5" { target powerpc*-*-darwin* i?86*-*-darwin* } } */
/* { dg-do compile } */
#include <objc/objc.h>
/* APPLE LOCAL radar 4894756 */
#include "../objc/execute/Object2.h"
__attribute ((deprecated))
@interface DEPRECATED : Object /* { dg-warning "declared here" "" { target *-*-* } } */
{ @public int ivar; }
- (int) instancemethod;
@property int prop;
@end
@implementation DEPRECATED
@dynamic prop;
-(int) instancemethod { return ivar; }
@end
__attribute ((deprecated)) void DEP(); /* { dg-warning "declared here" } */
@interface DEPRECATED (Category)
@end
@interface NS : DEPRECATED /* { dg-warning "deprecated" } */
@end
__attribute ((unavailable)) __attribute ((deprecated)) __attribute ((XXXX)) /* { dg-warning "unknown" } */
@interface UNAVAILABLE /* { dg-warning "declaration has been explicitly marked unavailable here" } */
- (int *) AnaotherInst;
+ (DEPRECATED*) return_deprecated; /* { dg-warning "deprecated" } */
- (UNAVAILABLE *) return_unavailable;
@end
DEPRECATED * deprecated_obj; /* { dg-warning "deprecated" } */
UNAVAILABLE *unavailable_obj; /* { dg-error "unavailable" } */
@implementation UNAVAILABLE
- (int *) AnaotherInst { return (int*)0; }
+ (DEPRECATED *) return_deprecated { return deprecated_obj; } /* { dg-warning "deprecated" } */
- (UNAVAILABLE *) return_unavailable { return unavailable_obj; } /* { dg-error "unavailable" } */
@end
int foo (DEPRECATED *unavailable_obj) /* { dg-warning "deprecated" } */
{
DEPRECATED *p = /* { dg-warning "deprecated" } */
[DEPRECATED new]; /* { dg-warning "deprecated" } */
int ppp = p.prop;
p.prop = 1;
(void)(p.prop != 3);
DEP(); /* { dg-warning "deprecated" } */
int q = p->ivar;
return [p instancemethod];
}