diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-10-23 23:59:08 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-10-23 23:59:08 +0000 |
commit | 1bbd143945ee57c30870cd452e0755dad54ec525 (patch) | |
tree | 8fad047161c592cf38c76ed92cb2ac76068495c7 /clang/test/Analysis/member-expr.cpp | |
parent | 746c06d0bc578c1fb66e31b55ffec75ff8fe021b (diff) | |
download | bcm5719-llvm-1bbd143945ee57c30870cd452e0755dad54ec525.tar.gz bcm5719-llvm-1bbd143945ee57c30870cd452e0755dad54ec525.zip |
[analyzer] Handle 'SomeVar.SomeEnumConstant', which is legal in C++.
This caused assertion failures analyzing LLVM.
<rdar://problem/12560282>
llvm-svn: 166529
Diffstat (limited to 'clang/test/Analysis/member-expr.cpp')
-rw-r--r-- | clang/test/Analysis/member-expr.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/test/Analysis/member-expr.cpp b/clang/test/Analysis/member-expr.cpp new file mode 100644 index 00000000000..cf437387d6a --- /dev/null +++ b/clang/test/Analysis/member-expr.cpp @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core,debug.ExprInspection %s -verify + +void clang_analyzer_eval(int); + +namespace EnumsViaMemberExpr { + struct Foo { + enum E { + Bar = 1 + }; + }; + + void testEnumVal(Foo Baz) { + clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}} + } + + void testEnumRef(Foo &Baz) { + clang_analyzer_eval(Baz.Bar == Foo::Bar); // expected-warning{{TRUE}} + } + + void testEnumPtr(Foo *Baz) { + clang_analyzer_eval(Baz->Bar == Foo::Bar); // expected-warning{{TRUE}} + } +}
\ No newline at end of file |