initializer.cpp revision 3a0a9e3e8bbaa45f3ca22b1e20b3beaac0f5861e
1// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection -analyzer-store region -cfg-add-initializers -cfg-add-implicit-dtors -verify %s 2 3// We don't inline constructors unless we have both initializers and 4// implicit destructors turned on. 5 6void clang_analyzer_eval(bool); 7 8class A { 9 int x; 10public: 11 A(); 12}; 13 14A::A() : x(0) { 15 clang_analyzer_eval(x == 0); // expected-warning{{TRUE}} 16} 17 18 19class DirectMember { 20 int x; 21public: 22 DirectMember(int value) : x(value) {} 23 24 int getX() { return x; } 25}; 26 27void testDirectMember() { 28 DirectMember obj(3); 29 clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}} 30} 31 32 33class IndirectMember { 34 struct { 35 int x; 36 }; 37public: 38 IndirectMember(int value) : x(value) {} 39 40 int getX() { return x; } 41}; 42 43void testIndirectMember() { 44 IndirectMember obj(3); 45 clang_analyzer_eval(obj.getX() == 3); // expected-warning{{TRUE}} 46} 47