| // RUN: %clang_analyze_cc1 -analyzer-checker=core,optin.cplusplus.UninitializedObject -std=c++11 -fblocks -verify %s | |
| typedef void (^myBlock) (); | |
| struct StructWithBlock { | |
| int a; | |
| myBlock z; // expected-note{{uninitialized field 'this->z'}} | |
| StructWithBlock() : a(0), z(^{}) {} | |
| // Miss initialization of field `z`. | |
| StructWithBlock(int pA) : a(pA) {} // expected-warning{{1 uninitialized field at the end of the constructor call}} | |
| }; | |
| void warnOnUninitializedBlock() { | |
| StructWithBlock a(10); | |
| } | |
| void noWarningWhenInitialized() { | |
| StructWithBlock a; | |
| } | |
| struct StructWithId { | |
| int a; | |
| id z; // expected-note{{uninitialized pointer 'this->z'}} | |
| StructWithId() : a(0) {} // expected-warning{{1 uninitialized field at the end of the constructor call}} | |
| }; | |
| void warnOnUninitializedId() { | |
| StructWithId s; | |
| } |