mirror of https://github.com/microsoft/clang.git
[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:
parent
e8d60ed0ef
commit
80cbce09b9
|
@ -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)
|
||||
|
|
|
@ -1059,7 +1059,7 @@ def ObjCNSObject : InheritableAttr {
|
|||
}
|
||||
|
||||
def ObjCIndependentClass : InheritableAttr {
|
||||
let Spellings = [GNU<"IndependentClass">];
|
||||
let Spellings = [GNU<"objc_independent_class">];
|
||||
let Documentation = [Undocumented];
|
||||
}
|
||||
|
||||
|
|
|
@ -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<
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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;
|
||||
}
|
Loading…
Reference in New Issue