[Objective-C Sema]. In my last patch change the

attribute name to objc_independent_class. 
rdar://20255473


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@235135 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Fariborz Jahanian 2015-04-16 21:52:34 +00:00
parent e8d60ed0ef
commit 80cbce09b9
5 changed files with 40 additions and 40 deletions

View File

@ -1575,7 +1575,7 @@ public:
bool isObjCLifetimeType() const; // (array of)* retainable type
bool isObjCIndirectLifetimeType() const; // (pointer to)* lifetime type
bool isObjCNSObjectType() const; // __attribute__((NSObject))
bool isObjCIndependentClassType() const; // __attribute__((IndependentClass))
bool isObjCIndependentClassType() const; // __attribute__((objc_independent_class))
// FIXME: change this to 'raw' interface type, so we can used 'interface' type
// for the common case.
bool isObjCObjectType() const; // NSString or typeof(*(id)0)

View File

@ -1059,7 +1059,7 @@ def ObjCNSObject : InheritableAttr {
}
def ObjCIndependentClass : InheritableAttr {
let Spellings = [GNU<"IndependentClass">];
let Spellings = [GNU<"objc_independent_class">];
let Documentation = [Undocumented];
}

View File

@ -2201,11 +2201,11 @@ def warn_nsobject_attribute : Warning<
"'NSObject' attribute may be put on a typedef only; attribute is ignored">,
InGroup<NSobjectAttribute>;
def warn_independentclass_attribute : Warning<
"'IndependentClass' attribute may be put on a typedef only; "
"'objc_independent_class' attribute may be put on a typedef only; "
"attribute is ignored">,
InGroup<IndependentClassAttribute>;
def warn_ptr_independentclass_attribute : Warning<
"'IndependentClass' attribute may be put on Objective-C object "
"'objc_independent_class' attribute may be put on Objective-C object "
"pointer type only; attribute is ignored">,
InGroup<IndependentClassAttribute>;
def warn_attribute_weak_on_local : Warning<

View File

@ -0,0 +1,36 @@
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
// rdar://20255473
@interface NSObject @end
typedef NSObject * __attribute__((objc_independent_class))dispatch_queue_t;
typedef struct S {int ii; } * __attribute__((objc_independent_class))dispatch_queue_t_2; // expected-warning {{Objective-C object}}
typedef struct { // expected-warning {{'objc_independent_class' attribute may be put on a typedef only; attribute is ignored}}
NSObject *__attribute__((objc_independent_class)) ns; // expected-warning {{'objc_independent_class' attribute may be put on a typedef only; attribute is ignored}}
} __attribute__((objc_independent_class)) T;
dispatch_queue_t dispatch_queue_create();
@interface DispatchQPointerCastIssue : NSObject {
NSObject *__attribute__((objc_independent_class)) Ivar; // expected-warning {{'objc_independent_class' attribute may be put on a typedef only; attribute is ignored}}
}
@property (copy) NSObject *__attribute__((objc_independent_class)) Prop; // expected-warning {{'objc_independent_class' attribute may be put on a typedef only; attribute is ignored}}
typedef NSObject * __attribute__((objc_independent_class))dispatch_queue_t_1;
@end
@implementation DispatchQPointerCastIssue
+ (dispatch_queue_t) newDispatchQueue {
return dispatch_queue_create();
}
@end
NSObject *get_nsobject() {
typedef NSObject * __attribute__((objc_independent_class))dispatch_queue_t;
dispatch_queue_t dt;
return dt;
}

View File

@ -1,36 +0,0 @@
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
// rdar://20255473
@interface NSObject @end
typedef NSObject * __attribute__((IndependentClass))dispatch_queue_t;
typedef struct S {int ii; } * __attribute__((IndependentClass))dispatch_queue_t_2; // expected-warning {{Objective-C object}}
typedef struct { // expected-warning {{'IndependentClass' attribute may be put on a typedef only; attribute is ignored}}
NSObject *__attribute__((IndependentClass)) ns; // expected-warning {{'IndependentClass' attribute may be put on a typedef only; attribute is ignored}}
} __attribute__((IndependentClass)) T;
dispatch_queue_t dispatch_queue_create();
@interface DispatchQPointerCastIssue : NSObject {
NSObject *__attribute__((IndependentClass)) Ivar; // expected-warning {{'IndependentClass' attribute may be put on a typedef only; attribute is ignored}}
}
@property (copy) NSObject *__attribute__((IndependentClass)) Prop; // expected-warning {{'IndependentClass' attribute may be put on a typedef only; attribute is ignored}}
typedef NSObject * __attribute__((IndependentClass))dispatch_queue_t_1;
@end
@implementation DispatchQPointerCastIssue
+ (dispatch_queue_t) newDispatchQueue {
return dispatch_queue_create();
}
@end
NSObject *get_nsobject() {
typedef NSObject * __attribute__((IndependentClass))dispatch_queue_t;
dispatch_queue_t dt;
return dt;
}