diff options
author | Douglas Gregor <dgregor@apple.com> | 2013-01-18 01:41:40 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2013-01-18 01:41:40 +0000 |
commit | f373c5d0b7f04fc3fa4e34bdfb868d118de6a641 (patch) | |
tree | 292a7a4a4757687bb715030cbff8c3bece832f92 | |
parent | 96bd14bf5833e26db0744fb94cfc85b2a67ae5c5 (diff) |
When checking the parameter types of an Objective-C method, don't
decay the parameter type immediately; let CheckParameter() do its
job. Fixes <rdar://problem/12071218>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@172780 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaDeclObjC.cpp | 2 | ||||
-rw-r--r-- | test/SemaObjC/arc.m | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 0ffdceb2ee..76bfaff91f 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -2906,8 +2906,6 @@ Decl *Sema::ActOnMethodDeclaration( DI = 0; } else { ArgType = GetTypeFromParser(ArgInfo[i].Type, &DI); - // Perform the default array/function conversions (C99 6.7.5.3p[7,8]). - ArgType = Context.getAdjustedParameterType(ArgType); } LookupResult R(*this, ArgInfo[i].Name, ArgInfo[i].NameLoc, diff --git a/test/SemaObjC/arc.m b/test/SemaObjC/arc.m index bffcd4bbde..d89d035fca 100644 --- a/test/SemaObjC/arc.m +++ b/test/SemaObjC/arc.m @@ -11,7 +11,7 @@ id CFBridgingRelease(CFTypeRef); @end @class NSFastEnumerationState; @protocol NSFastEnumeration -- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id [])buffer count:(NSUInteger)len; +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id __unsafe_unretained [])buffer count:(NSUInteger)len; @end @interface NSNumber + (NSNumber *)numberWithInt:(int)value; @@ -752,3 +752,7 @@ void rdar12569201(id key, id value) { e = @(42); // expected-warning {{assigning numeric literal to a weak variable; object will be released after assignment}} m = @(41 + 1); // expected-warning {{assigning boxed expression to a weak variable; object will be released after assignment}} } + +@interface C +- (void)method:(id[])objects; // expected-error{{must explicitly describe intended ownership of an object array parameter}} +@end |