| // RUN: %clang --analyze %s -o %t |
| |
| // Tests that some specific checkers are enabled by default. |
| |
| id foo(int x) { |
| id title; |
| switch (x) { |
| case 1: |
| title = @"foo"; // expected-warning {{never read}} |
| case 2: |
| title = @"bar"; |
| break; |
| default: |
| title = "@baz"; |
| break; |
| } |
| return title; |
| } |
| |
| // <rdar://problem/8808566> Static analyzer is wrong: NSWidth(imgRect) not understood as unconditional assignment |
| // |
| // Note: this requires inlining support. This previously issued a false positive use of |
| // uninitialized value when calling NSWidth. |
| typedef double CGFloat; |
| |
| struct CGPoint { |
| CGFloat x; |
| CGFloat y; |
| }; |
| typedef struct CGPoint CGPoint; |
| |
| struct CGSize { |
| CGFloat width; |
| CGFloat height; |
| }; |
| typedef struct CGSize CGSize; |
| |
| struct CGRect { |
| CGPoint origin; |
| CGSize size; |
| }; |
| typedef struct CGRect CGRect; |
| |
| typedef CGRect NSRect; |
| typedef CGSize NSSize; |
| |
| static __inline__ __attribute__((always_inline)) CGFloat NSWidth(NSRect aRect) { |
| return (aRect.size.width); |
| } |
| |
| static __inline__ __attribute__((always_inline)) CGFloat NSHeight(NSRect aRect) { |
| return (aRect.size.height); |
| } |
| |
| NSSize rdar880566_size(); |
| |
| double rdar8808566() { |
| NSRect myRect; |
| myRect.size = rdar880566_size(); |
| double x = NSWidth(myRect) + NSHeight(myRect); // no-warning |
| return x; |
| } |
| |