// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=core,debug.ExprInspection %s -verify
voidclang_analyzer_checkInlined(bool);voidclang_analyzer_eval(int);namespaceEnumsViaMemberExpr{structFoo{enumE{
Bar =1};};voidtestEnumVal(Foo Baz){clang_analyzer_eval(Baz.Bar== Foo::Bar);// expected-warning{{TRUE}}
}voidtestEnumRef(Foo &Baz){clang_analyzer_eval(Baz.Bar== Foo::Bar);// expected-warning{{TRUE}}
}voidtestEnumPtr(Foo *Baz){clang_analyzer_eval(Baz->Bar== Foo::Bar);// expected-warning{{TRUE}}
}}namespacePR19531{structA{A():x(0){}boolh()const;int x;};structB{voidg(bool(A::*mp_f)()const){// This used to trigger an assertion because the 'this' pointer is a
// temporary.
(A().*mp_f)();}voidf(){g(&A::h);}};}