• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: %clang_cc1 -fsyntax-only -verify -Wparentheses -Wno-objc-root-class %s
2
3// Don't warn about some common ObjC idioms unless we have -Widiomatic-parentheses on.
4// <rdar://problem/7382435>
5
6@interface Object
7{
8  unsigned uid;
9}
10- (id) init;
11- (id) initWithInt: (int) i;
12- (void) iterate: (id) coll;
13- (id) nextObject;
14@property unsigned uid;
15@end
16
17@implementation Object
18@synthesize uid;
19- (id) init {
20  if (self = [self init]) {
21  }
22  return self;
23}
24
25- (id) initWithInt: (int) i {
26  if (self = [self initWithInt: i]) {
27  }
28  // rdar://11066598
29  if (self.uid = 100) { // expected-warning {{using the result of an assignment as a condition without parentheses}} \
30                        // expected-note {{place parentheses around the assignment to silence this warning}} \
31                        // expected-note {{use '==' to turn this assignment into an equality comparison}}
32        // ...
33  }
34  return self;
35}
36
37- (void) iterate: (id) coll {
38  id cur;
39  while (cur = [coll nextObject]) {
40  }
41}
42
43- (id) nextObject {
44  return self;
45}
46@end
47