Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaObjC/mrc-no-weak.m @ 207:2e18cbf3894f
LLVM12
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Jun 2021 06:07:14 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -fobjc-runtime=macosx-10.8 -fsyntax-only -verify %s __attribute__((objc_root_class)) @interface Root @end // These should not get diagnosed immediately. @interface A : Root { __weak id x; } @property __weak id y; @end // Diagnostic goes on the ivar if it's explicit. @interface B : Root { __weak id x; // expected-error {{cannot create __weak reference in file using manual reference counting}} } @property __weak id x; @end @implementation B @synthesize x; @end // Otherwise, it goes with the @synthesize. @interface C : Root @property __weak id x; // expected-note {{property declared here}} @end @implementation C @synthesize x; // expected-error {{cannot synthesize weak property in file using manual reference counting}} @end @interface D : Root @property __weak id x; // expected-note {{property declared here}} @end @implementation D // expected-error {{cannot synthesize weak property in file using manual reference counting}} @end @interface E : Root { @public __weak id x; // expected-note 2 {{declaration uses __weak, but ARC is disabled}} } @end void testE(E *e) { id x = e->x; // expected-error {{'x' is unavailable}} e->x = x; // expected-error {{'x' is unavailable}} } @interface F : Root @property (weak) id x; @end void testF(F *f) { id x = f.x; }