1 | // RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.cplusplus.UninitializedObject -std=c++11 -fblocks -verify %s |
2 | |
3 | typedef void (^myBlock) (); |
4 | |
5 | struct StructWithBlock { |
6 | int a; |
7 | myBlock z; // expected-note{{uninitialized field 'this->z'}} |
8 | |
9 | StructWithBlock() : a(0), z(^{}) {} |
10 | |
11 | // Miss initialization of field `z`. |
12 | StructWithBlock(int pA) : a(pA) {} // expected-warning{{1 uninitialized field at the end of the constructor call}} |
13 | |
14 | }; |
15 | |
16 | void warnOnUninitializedBlock() { |
17 | StructWithBlock a(10); |
18 | } |
19 | |
20 | void noWarningWhenInitialized() { |
21 | StructWithBlock a; |
22 | } |
23 | |
24 | struct StructWithId { |
25 | int a; |
26 | id z; // expected-note{{uninitialized pointer 'this->z'}} |
27 | StructWithId() : a(0) {} // expected-warning{{1 uninitialized field at the end of the constructor call}} |
28 | }; |
29 | |
30 | void warnOnUninitializedId() { |
31 | StructWithId s; |
32 | } |
33 | |