llvm-project/clang/test/Rewriter/rewrite-block-pointer.mm
Mehdi Amini e0ac46e69d Revert "Remove rdar links; NFC"
This reverts commit d618f1c3b12effd0c2bdb7d02108d3551f389d3d.
This commit wasn't reviewed ahead of time and significant concerns were
raised immediately after it landed. According to our developer policy
this warrants immediate revert of the commit.

https://llvm.org/docs/DeveloperPolicy.html#patch-reversion-policy

Differential Revision: https://reviews.llvm.org/D155509
2023-07-17 18:08:04 -07:00

113 lines
3.1 KiB
Plaintext

// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc -fobjc-runtime=macosx-fragile-10.5 %s -o %t-rw.cpp
// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-rw.cpp
// RUN: %clang_cc1 -x objective-c++ -Wno-return-type -fblocks -fms-extensions -rewrite-objc %s -o %t-modern-rw.cpp
// RUN: %clang_cc1 -fsyntax-only -std=gnu++98 -Wno-address-of-temporary -D"SEL=void*" -D"__declspec(X)=" %t-modern-rw.cpp
// radar 7638400
// rdar://11375908
typedef unsigned long size_t;
typedef void * id;
void *sel_registerName(const char *);
@interface X
@end
void foo(void (^block)(int));
@implementation X
static void enumerateIt(void (^block)(id, id, char *)) {
foo(^(int idx) { });
}
@end
// radar 7651312
void apply(void (^block)(int));
static void x(int (^cmp)(int, int)) {
x(cmp);
}
static void y(int (^cmp)(int, int)) {
apply(^(int sect) {
x(cmp);
});
}
// radar 7659483
void *_Block_copy(const void *aBlock);
void x(void (^block)(void)) {
block = ((__typeof(block))_Block_copy((const void *)(block)));
}
// radar 7682763
@interface Y {
@private
id _private;
}
- (void (^)(void))f;
@end
typedef void (^void_block_t)(void);
@interface YY {
void_block_t __completion;
}
@property (copy) void_block_t f;
@end
@implementation Y
- (void (^)(void))f {
return [_private f];
}
@end
// rdar: //8608902
@protocol CoreDAVAccountInfoProvider;
@protocol CodeProvider;
typedef void (^BDVDiscoveryCompletionHandler)(int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
typedef void (^BDVDiscoveryCompletion)(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
typedef void (^BDVDiscovery)(int success);
typedef void (^BDVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo,
int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);
typedef void (^BLOCK)(id, id<CoreDAVAccountInfoProvider>, id<CodeProvider> codeInfo);
typedef void (^EMPTY_BLOCK)();
typedef void (^ BDVDiscoveryCompletion1 )(id<CodeProvider> codeInfo, int success, id<CoreDAVAccountInfoProvider> discoveredInfo);
void (^BL)(void(^arg1)(), int i1, void(^arg)(int));
typedef void (^iscoveryCompletionHandler)(void(^arg1)(), id<CoreDAVAccountInfoProvider> discoveredInfo);
typedef void (^DVDisc)(id<CoreDAVAccountInfoProvider> discoveredInfo, id<CodeProvider> codeInfo,
void(^arg1)(), int i1, void(^arg)(id<CoreDAVAccountInfoProvider>),
int success, id<CoreDAVAccountInfoProvider, CodeProvider> Info);
@interface I @end
@interface INTF @end
void (^BLINT)(I<CoreDAVAccountInfoProvider>* ARG, INTF<CodeProvider, CoreDAVAccountInfoProvider>* ARG1);
void test8608902() {
BDVDiscoveryCompletionHandler ppp;
ppp(1, 0);
}
void test9204669() {
__attribute__((__blocks__(byref))) char (^addChangeToData)();
addChangeToData = ^() {
return 'b';
};
addChangeToData();
}
void test9204669_1() {
__attribute__((__blocks__(byref))) void (^addChangeToData)();
addChangeToData = ^() {
addChangeToData();
};
}