1// RUN: %clang_analyze_cc1 -analyzer-checker=core,optin.cplusplus.UninitializedObject -std=c++11 -fblocks -verify %s
2
3typedef void (^myBlock) ();
4
5struct 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
16void warnOnUninitializedBlock() {
17  StructWithBlock a(10);
18}
19
20void noWarningWhenInitialized() {
21  StructWithBlock a;
22}
23
24struct 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
30void warnOnUninitializedId() {
31  StructWithId s;
32}
33