[LLVMbugs] [Bug 11187] New: Add checks that completionHandlers are called
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed Oct 19 18:47:00 PDT 2011
http://llvm.org/bugs/show_bug.cgi?id=11187
Summary: Add checks that completionHandlers are called
Product: clang
Version: 2.8
Platform: PC
OS/Version: All
Status: NEW
Severity: enhancement
Priority: P
Component: Static Analyzer
AssignedTo: kremenek at apple.com
ReportedBy: tjw at me.com
CC: llvmbugs at cs.uiuc.edu
Several Cocoa APIs now take completion handler blocks and failure to call those
completion handlers results in hard to debug errors and deadlocks.
clang-sa could have an annotation on block arguments (say
"__attribute__((must_call))" for the sake of argument) and it could
automatically apply that if the block argument or method name fragment is
called 'completionHandler'.
For example:
- (void)doSomethingAsync:(void (^)(void))completionHandler;
{
if (!thing1Works) {
if (completionHandler)
completionHandler(); // OK
return;
}
return; // diagnostic since the completionHandler wasn't called
}
This would need to handle the pattern where the completionHandler is destined
to be invoked on another queue:
- (void)doSomethingAsync:(void (^)(NSError *errorOrNil))completionHandler;
{
NSError *error;
... do some stuff ...
if (completionHandler) {
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
completionHandler(error);
}];
}
}
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list