|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | Teach the retain-count checker that CoreMedia reference types use
CoreFoundation-style reference counting. This enables the checker
to catch leaks and over releases of those types.
rdar://problem/33599757
llvm-svn: 318979 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Includes a simple static analyzer check and not much else, but we'll also
be able to take advantage of this in Swift.
This feature can be tested for using __has_feature(cf_returns_on_parameters).
This commit also contains two fixes:
- Look through non-typedef sugar when deciding whether something is a CF type.
- When (cf|ns)_returns(_not)?_retained is applied to invalid properties,
  refer to "property" instead of "method" in the error message.
rdar://problem/18742441
llvm-svn: 240185 | 
| | 
| 
| 
| 
| 
| 
| | Nearly all of these changes are one-to-one replacements; the few that
aren't have to do with custom identifier validation.
llvm-svn: 174768 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | uncovered.
This required manually correcting all of the incorrect main-module
headers I could find, and running the new llvm/utils/sort_includes.py
script over the files.
I also manually added quite a few missing headers that were uncovered by
shuffling the order or moving headers up to be main-module-headers.
llvm-svn: 169237 | 
| | 
| 
| 
| | llvm-svn: 161660 | 
| | 
| 
| 
| 
| 
| 
| 
| | are now just simple wrappers around method families, and method decls can cache method family lookups. Also, no one is using them right now.
The one difference between ObjCMethodDecl::getMethodFamily and Selector::getMethodFamily is that the former will do some additional sanity checking, and since CoreFoundation types don't look like Objective-C objects, an otherwise interesting method will get a method family of OMF_None. Future clients that use method families should consider how they want to handle CF types.
llvm-svn: 153000 | 
| | 
| 
| 
| | llvm-svn: 148577 | 
| | 
| 
| 
| | llvm-svn: 147506 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"
llvm-svn: 146679 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | to take a FunctionDecl* instead of an llvm::StringRef.  Eventually
we might push more logic in there, like using slightly different
conventions for C++ methods.
Also, fix a bug where 'copy' and 'create' were being caught in 
non-camel-cased strings.  We want copyFoo and CopyFoo and XCopy
but not Xcopy or xcopy.
llvm-svn: 140911 | 
| | 
| 
| 
| 
| 
| | This matches gcc's logic. Second half of PR10661.
llvm-svn: 138730 | 
| | 
| 
| 
| | llvm-svn: 137896 | 
| | 
| 
| 
| 
| 
| 
| 
| | LLVM.h imports
them into the clang namespace.
llvm-svn: 135852 | 
| | 
| 
| 
| 
| 
| | to extend to camel case functions instead of just title case functions.  Fixes <rdar://problem/9732321>.
llvm-svn: 135350 | 
| | 
| 
| 
| 
| 
| | API.  No functionality change.
llvm-svn: 135349 | 
| | 
| 
| 
| 
| 
| 
| | obey the objc_method_family attribute when provided. Fixes
<rdar://problem/9726279>.
llvm-svn: 134493 | 
| | 
| 
| 
| | llvm-svn: 134454 | 
| | 
| 
| 
| | llvm-svn: 133214 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | Related result types apply Cocoa conventions to the type of message
sends and property accesses to Objective-C methods that are known to
always return objects whose type is the same as the type of the
receiving class (or a subclass thereof), such as +alloc and
-init. This tightens up static type safety for Objective-C, so that we
now diagnose mistakes like this:
t.m:4:10: warning: incompatible pointer types initializing 'NSSet *'
with an
      expression of type 'NSArray *' [-Wincompatible-pointer-types]
  NSSet *array = [[NSArray alloc] init];
         ^       ~~~~~~~~~~~~~~~~~~~~~~
/System/Library/Frameworks/Foundation.framework/Headers/NSObject.h:72:1:
note: 
      instance method 'init' is assumed to return an instance of its
      receiver
      type ('NSArray *')
- (id)init;
^
It also means that we get decent type inference when writing code in
Objective-C++0x:
  auto array = [[NSMutableArray alloc] initWithObjects:@"one",  @"two",nil];
  //    ^ now infers NSMutableArray* rather than id
llvm-svn: 132868 | 
| | 
| 
| 
| 
| 
| 
| 
| | conventional categories into Basic and AST.  Update the self-init checker
to use this logic;  CFRefCountChecker is complicated enough that I didn't
want to touch it.
llvm-svn: 126817 | 
| | 
| 
| 
| 
| 
| | thousand other things which were (generally inadvertantly) relying on that.
llvm-svn: 123814 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | cocoa::deriveNamingConvention to control whether
the prefix should be ignored.
E.g. if ignorePrefix is true, "_init" and "init" selectors will both be result in InitRule, but if
ignorePrefix is false, only "init" will return InitRule.
llvm-svn: 123262 | 
| | 
| 
| 
| | llvm-svn: 122492 | 
| | 
| 
| 
| | llvm-svn: 122423 | 
| | 
| 
| 
| 
| 
| | when the selector is the string 'mutable'.
llvm-svn: 122046 | 
|  | to libAnalysis.  Similar to Format (format string checking), 
CocoaConventions has the
potential to serve clients other than the
static analyzer.
llvm-svn: 122040 |