/* * Copyright (c) 2017-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import @interface A : NSObject @end typedef void (^MyBlock)(); @interface C : NSObject + (void)use_block:(MyBlock)block; @end @implementation A + (int)ok1 { __block int a; [C use_block:^() { a = 10; }]; return a; }; + (int)bad1 { int a; [C use_block:^() { int x = 0; }]; return a; }; + (instancetype)ok2 { static id sharedInstance; ^{ sharedInstance = [[self alloc] init]; }(); return sharedInstance; } @end