// RUN: %clang_analyze_cc1 -w %s -verify \
// RUN:     -analyzer-checker=core,alpha.core,debug.ExprInspection

#ifdef HEADER // A clever trick to avoid splitting up the test.

@interface NSObject
@end

@interface HeaderClass : NSObject
@property NSObject *prop;
@end

#else
#define HEADER
#include "ObjCProperties.m"

@implementation HeaderClass
- (void)foo {
  if ((self.prop)) {
  }

  // This test tests that no dynamic bifurcation is performed on the property.
  // The TRUE/FALSE dilemma correctly arises from eagerly-assume behavior
  // inside the if-statement. The dynamic bifurcation at (self.prop) inside
  // the if-statement was causing an UNKNOWN to show up as well due to
  // extra parentheses being caught inside PseudoObjectExpr.
  // This should not be UNKNOWN.
  clang_analyzer_eval(self.prop); // expected-warning{{TRUE}}
                                  // expected-warning@-1{{FALSE}}
}
@end


// The point of this test cases is to exercise properties in the static
// analyzer

@interface MyClass {
@private
    id _X;
}
- (id)initWithY:(id)Y;
@property(copy, readwrite) id X;
@end

@implementation MyClass
@synthesize X = _X;
- (id)initWithY:(id)Y {
  self.X = Y;
  return self;
}
@end
#endif
