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