brintos

brintos / llvm-project-archived public Read only

0
0
Text · 879 B · 8fb6fe4 Raw
42 lines · cpp
1// RUN: %clang_analyze_cc1 -std=c++14 -analyzer-checker=core,debug.ExprInspection %s -verify2 3void clang_analyzer_checkInlined(bool);4void clang_analyzer_eval(int);5 6namespace EnumsViaMemberExpr {7  struct Foo {8    enum E {9      Bar = 110    };11  };12 13  void testEnumVal(Foo Baz) {14    clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}15  }16 17  void testEnumRef(Foo &Baz) {18    clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}}19  }20 21  void testEnumPtr(Foo *Baz) {22    clang_analyzer_eval(Baz->Bar == Foo::Bar); // expected-warning{{TRUE}}23  }24}25 26namespace PR19531 {27  struct A {28    A() : x(0) {}29    bool h() const;30    int x;31  };32 33  struct B {34    void g(bool (A::*mp_f)() const) {35      // This used to trigger an assertion because the 'this' pointer is a36      // temporary.37      (A().*mp_f)();38    }39    void f() { g(&A::h); }40  };41}42