// RUN: %clang_cc1 -fsyntax-only -verify -Wparentheses -Wno-objc-root-class %s

// Don't warn about some common ObjC idioms unless we have -Widiomatic-parentheses on.

@interface Object 
{
  unsigned uid;
}
- (id) init;
- (id) initWithInt: (int) i;
- (id) myInit __attribute__((objc_method_family(init)));
- (void) iterate: (id) coll;
- (id) nextObject;
@property unsigned uid;
@end

@implementation Object
@synthesize uid;
- (id) init {
  if (self = [self init]) {
  }
  return self;
}

- (id) initWithInt: (int) i {
  if (self = [self initWithInt: i]) {
  }
  if (self.uid = 100) { // expected-warning {{using the result of an assignment as a condition without parentheses}} \
                        // expected-note {{place parentheses around the assignment to silence this warning}} \
                        // expected-note {{use '==' to turn this assignment into an equality comparison}}
        // ...
  }
  return self;
}

- (id) myInit {
  if (self = [self myInit]) {
  }
  return self;
}

- (void) iterate: (id) coll {
  id cur;
  while (cur = [coll nextObject]) {
  }
}

- (id) nextObject {
  return self;
}
@end
