forked from OSchip/llvm-project
[analyzer] -drain is not an alias for -release.
This was previously added to support -[NSAutoreleasePool drain], which behaves like -release under non-GC and "please collect" under GC. We're not currently modeling the autorelease pool stack, though, so we can just take this out entirely. Fixes PR14927. llvm-svn: 172444
This commit is contained in:
parent
d7931f7047
commit
cb6a721920
|
@ -1570,10 +1570,6 @@ void RetainSummaryManager::InitializeMethodSummaries() {
|
|||
Summ = getPersistentSummary(NoRet, DecRefMsg);
|
||||
addNSObjectMethSummary(GetNullarySelector("release", Ctx), Summ);
|
||||
|
||||
// Create the "drain" selector.
|
||||
Summ = getPersistentSummary(NoRet, isGCEnabled() ? DoNothing : DecRef);
|
||||
addNSObjectMethSummary(GetNullarySelector("drain", Ctx), Summ);
|
||||
|
||||
// Create the -dealloc summary.
|
||||
Summ = getPersistentSummary(NoRet, Dealloc);
|
||||
addNSObjectMethSummary(GetNullarySelector("dealloc", Ctx), Summ);
|
||||
|
|
|
@ -1938,6 +1938,21 @@ void test_CFPlugInInstanceCreate(CFUUIDRef factoryUUID, CFUUIDRef typeUUID) {
|
|||
CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID); // no-warning
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// PR14927: -drain only has retain-count semantics on NSAutoreleasePool.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@interface PR14927 : NSObject
|
||||
- (void)drain;
|
||||
@end
|
||||
|
||||
void test_drain() {
|
||||
PR14927 *obj = [[PR14927 alloc] init];
|
||||
[obj drain];
|
||||
[obj release]; // no-warning
|
||||
}
|
||||
|
||||
|
||||
// CHECK: <key>diagnostics</key>
|
||||
// CHECK-NEXT: <array>
|
||||
// CHECK-NEXT: <dict>
|
||||
|
|
Loading…
Reference in New Issue