view clang/test/SemaObjC/objc-independent-class-attribute.m @ 180:680fa57a2f20

fix compile errors.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 May 2020 17:44:06 +0900
parents 1d019706d866
children c4bab56944e8
line wrap: on
line source

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