Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaObjC/infer-availability-from-init.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 -triple x86_64-apple-macosx-10.9 -Wunguarded-availability -fblocks -fsyntax-only -verify %s __attribute__((objc_root_class)) @interface NSObject +(instancetype)new; -(instancetype)init; @end @interface MyObject : NSObject -(instancetype)init __attribute__((unavailable)); // expected-note{{'init' has been explicitly marked unavailable here}} @end void usemyobject() { [MyObject new]; // expected-error{{'new' is unavailable}} } @interface MyOtherObject : NSObject +(instancetype)init __attribute__((unavailable)); +(instancetype)new; @end void usemyotherobject() { [MyOtherObject new]; // no error; new is overrideen. } @interface NotGoodOverride : NSObject +(instancetype)init __attribute__((unavailable)); -(instancetype)new; +(instancetype)new: (int)x; @end void usenotgoodoverride() { [NotGoodOverride new]; // no error } @interface NotNSObject +(instancetype)new; -(instancetype)init; @end @interface NotMyObject : NotNSObject -(instancetype)init __attribute__((unavailable)); @end void usenotmyobject() { [NotMyObject new]; // no error; this isn't NSObject } @interface FromSelf : NSObject -(instancetype)init __attribute__((unavailable)); +(FromSelf*)another_one; @end @implementation FromSelf +(FromSelf*)another_one { [self new]; } @end @interface NoInit : NSObject -(instancetype)init __attribute__((unavailable)); // expected-note {{'init' has been explicitly marked unavailable here}} @end @interface NoInitSub : NoInit @end @implementation NoInitSub -(void)meth:(Class)c { [c new]; // No error; unknown interface. [NoInitSub new]; // expected-error {{'new' is unavailable}} } @end