// RUN: %clang_analyze_cc1 %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;
}

