1 // RUN: %clang --analyze %s -o %t 2 3 // Tests that some specific checkers are enabled by default. 4 5 id 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 20 // <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. 24 typedef double CGFloat; 25 26 struct CGPoint { 27 CGFloat x; 28 CGFloat y; 29 }; 30 typedef struct CGPoint CGPoint; 31 32 struct CGSize { 33 CGFloat width; 34 CGFloat height; 35 }; 36 typedef struct CGSize CGSize; 37 38 struct CGRect { 39 CGPoint origin; 40 CGSize size; 41 }; 42 typedef struct CGRect CGRect; 43 44 typedef CGRect NSRect; 45 typedef CGSize NSSize; 46 47 static __inline__ __attribute__((always_inline)) CGFloat NSWidth(NSRect aRect) { 48 return (aRect.size.width); 49 } 50 51 static __inline__ __attribute__((always_inline)) CGFloat NSHeight(NSRect aRect) { 52 return (aRect.size.height); 53 } 54 55 NSSize rdar880566_size(); 56 57 double rdar8808566() { 58 NSRect myRect; 59 myRect.size = rdar880566_size(); 60 double x = NSWidth(myRect) + NSHeight(myRect); // no-warning 61 return x; 62 } 63 64