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