diff options
| author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-22 00:47:53 +0000 | 
|---|---|---|
| committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2012-05-22 00:47:53 +0000 | 
| commit | 94442980c08049a7867d0aa2f0bf79cf751083fe (patch) | |
| tree | ddb448daed60928e6d9a0fe9e8dc31e68b601383 | |
| parent | 058bb9908f25566b5ec67f36ebf7f709cb6d9c1f (diff) | |
| download | bcm5719-llvm-94442980c08049a7867d0aa2f0bf79cf751083fe.tar.gz bcm5719-llvm-94442980c08049a7867d0aa2f0bf79cf751083fe.zip  | |
[objcmt] Don't add redundant parentheses when migrating subscripting of an ivar.
rdar://11501256
llvm-svn: 157227
| -rw-r--r-- | clang/lib/Edit/RewriteObjCFoundationAPI.cpp | 2 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-subscripting-literals.m | 5 | ||||
| -rw-r--r-- | clang/test/ARCMT/objcmt-subscripting-literals.m.result | 5 | 
3 files changed, 10 insertions, 2 deletions
diff --git a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp b/clang/lib/Edit/RewriteObjCFoundationAPI.cpp index 846d58fc2cb..7445700cc49 100644 --- a/clang/lib/Edit/RewriteObjCFoundationAPI.cpp +++ b/clang/lib/Edit/RewriteObjCFoundationAPI.cpp @@ -624,6 +624,7 @@ static bool subscriptOperatorNeedsParens(const Expr *FullExpr) {        isa<ObjCPropertyRefExpr>(Expr) ||        isa<ObjCProtocolExpr>(Expr) ||        isa<MemberExpr>(Expr) || +      isa<ObjCIvarRefExpr>(Expr) ||        isa<ParenExpr>(FullExpr) ||        isa<ParenListExpr>(Expr) ||        isa<SizeOfPackExpr>(Expr)) @@ -650,6 +651,7 @@ static bool castOperatorNeedsParens(const Expr *FullExpr) {        isa<ObjCPropertyRefExpr>(Expr) ||        isa<ObjCProtocolExpr>(Expr) ||        isa<MemberExpr>(Expr) || +      isa<ObjCIvarRefExpr>(Expr) ||        isa<ParenExpr>(FullExpr) ||        isa<ParenListExpr>(Expr) ||        isa<SizeOfPackExpr>(Expr) || diff --git a/clang/test/ARCMT/objcmt-subscripting-literals.m b/clang/test/ARCMT/objcmt-subscripting-literals.m index 0371e2e2ca6..6d626c4683d 100644 --- a/clang/test/ARCMT/objcmt-subscripting-literals.m +++ b/clang/test/ARCMT/objcmt-subscripting-literals.m @@ -77,7 +77,9 @@ typedef const struct __CFString * CFStringRef;  #define PAIR(x) @#x, [NSNumber numberWithInt:(x)]  #define TWO(x) ((x), (x)) -@interface I +@interface I { +  NSArray *ivarArr; +}  @end  @implementation I  -(void) foo { @@ -138,6 +140,7 @@ typedef const struct __CFString * CFStringRef;    o = [*parr objectAtIndex:2];    void *hd;    o = [(NSArray*)hd objectAtIndex:2]; +  o = [ivarArr objectAtIndex:2];  }  @end diff --git a/clang/test/ARCMT/objcmt-subscripting-literals.m.result b/clang/test/ARCMT/objcmt-subscripting-literals.m.result index 333d0b4c388..a4eca6a447d 100644 --- a/clang/test/ARCMT/objcmt-subscripting-literals.m.result +++ b/clang/test/ARCMT/objcmt-subscripting-literals.m.result @@ -77,7 +77,9 @@ typedef const struct __CFString * CFStringRef;  #define PAIR(x) @#x, [NSNumber numberWithInt:(x)]  #define TWO(x) ((x), (x)) -@interface I +@interface I { +  NSArray *ivarArr; +}  @end  @implementation I  -(void) foo { @@ -138,6 +140,7 @@ typedef const struct __CFString * CFStringRef;    o = (*parr)[2];    void *hd;    o = ((NSArray*)hd)[2]; +  o = ivarArr[2];  }  @end  | 

