|  | // 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; | 
|  | } |