Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / clang / test / SemaObjCXX / cstyle-block-pointer-cast.mm
bloba9b16c6521e4ebf86d5d99000073a225b227df50
1 // RUN: %clang_cc1 -fsyntax-only -verify -fblocks -Wno-objc-root-class %s
3 typedef int (^blocktype)(int a, int b);
5 @interface A {
6     A* a;
7     id b;
8     Class c;
10 - (blocktype)Meth;
11 @end
13 @implementation A
14 - (blocktype)Meth {
15         if (b)
16           return (blocktype)b;
17         else if (a)
18           return (blocktype)a; // expected-error {{C-style cast from 'A *' to 'blocktype' (aka 'int (^)(int, int)') is not allowed}}
19         else
20           return (blocktype)c;
22 @end
24 @interface B {
25     blocktype a;
26     blocktype b;
27     blocktype c;
29 - (id)Meth;
30 @end
32 @implementation B
33 - (id)Meth {
34         if (a)
35           return (A*)a; // expected-error {{C-style cast from 'blocktype' (aka 'int (^)(int, int)') to 'A *' is not allowed}}
36         if (b)
37           return (id)b;
38         if (c)
39           return (Class)b;
41 @end