blob: 82656b24a6e97dffb4ec1fa581751aecf12e2292 [file] [log] [blame]
Ted Kremeneka8180e52012-01-20 06:00:17 +00001// RUN: %clang --analyze %s -o %t
2
3// Tests that some specific checkers are enabled by default.
4
5id foo(int x) {
6 id title;
7 switch (x) {
8 case 1:
9 title = @"foo"; // expected-warning {{never read}}
10 case 2:
11 title = @"bar";
12 break;
13 default:
14 title = "@baz";
15 break;
16 }
17 return title;
18}
19
Ted Kremenek2befa8c2012-03-16 04:59:57 +000020// <rdar://problem/8808566> Static analyzer is wrong: NSWidth(imgRect) not understood as unconditional assignment
21//
22// Note: this requires inlining support. This previously issued a false positive use of
23// uninitialized value when calling NSWidth.
24typedef double CGFloat;
25
26struct CGPoint {
27 CGFloat x;
28 CGFloat y;
29};
30typedef struct CGPoint CGPoint;
31
32struct CGSize {
33 CGFloat width;
34 CGFloat height;
35};
36typedef struct CGSize CGSize;
37
38struct CGRect {
39 CGPoint origin;
40 CGSize size;
41};
42typedef struct CGRect CGRect;
43
44typedef CGRect NSRect;
45typedef CGSize NSSize;
46
47static __inline__ __attribute__((always_inline)) CGFloat NSWidth(NSRect aRect) {
48 return (aRect.size.width);
49}
50
51static __inline__ __attribute__((always_inline)) CGFloat NSHeight(NSRect aRect) {
52 return (aRect.size.height);
53}
54
55NSSize rdar880566_size();
56
57double rdar8808566() {
58 NSRect myRect;
59 myRect.size = rdar880566_size();
60 double x = NSWidth(myRect) + NSHeight(myRect); // no-warning
61 return x;
62}
Ted Kremeneka8180e52012-01-20 06:00:17 +000063