Home | History | Annotate | Download | only in Analysis
      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