xref: /llvm-project/clang/test/Analysis/base-init.cpp (revision 184c6242faca0be0188611d45b41235e68ef282a)
1*184c6242SDominic Chen // RUN: %clang_analyze_cc1 -analyzer-checker=core,debug.ExprInspection -analyzer-config c++-inlining=constructors -verify %s
20d87e0c6SZhongxing Xu 
36d5a8caaSJordy Rose void clang_analyzer_eval(bool);
46d5a8caaSJordy Rose 
50d87e0c6SZhongxing Xu class A {
60d87e0c6SZhongxing Xu   int x;
70d87e0c6SZhongxing Xu public:
80d87e0c6SZhongxing Xu   A();
getx() const90d87e0c6SZhongxing Xu   int getx() const {
100d87e0c6SZhongxing Xu     return x;
110d87e0c6SZhongxing Xu   }
120d87e0c6SZhongxing Xu };
130d87e0c6SZhongxing Xu 
A()140d87e0c6SZhongxing Xu A::A() : x(0) {
150d87e0c6SZhongxing Xu }
160d87e0c6SZhongxing Xu 
170d87e0c6SZhongxing Xu class B : public A {
180d87e0c6SZhongxing Xu   int y;
190d87e0c6SZhongxing Xu public:
200d87e0c6SZhongxing Xu   B();
210d87e0c6SZhongxing Xu };
220d87e0c6SZhongxing Xu 
B()230d87e0c6SZhongxing Xu B::B() {
240d87e0c6SZhongxing Xu }
250d87e0c6SZhongxing Xu 
f()260d87e0c6SZhongxing Xu void f() {
270d87e0c6SZhongxing Xu   B b;
286d5a8caaSJordy Rose   clang_analyzer_eval(b.getx() == 0); // expected-warning{{TRUE}}
290d87e0c6SZhongxing Xu }
30