| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
| |
in the DeclaratorInfo, if one is present.
Preserve source information through template instantiation. This is made
more complicated by the possibility that ParmVarDecls don't have DIs, which
is possibly worth fixing in the future.
Also preserve source information for function parameters in ObjC method
declarations.
llvm-svn: 84971
|
| |
|
|
|
|
|
|
|
| |
users to
pass a LookupResult reference to lookup routines. Call out uses which assume a single
result.
llvm-svn: 83674
|
| |
|
|
|
|
|
|
|
| |
extension class's protocol list so its AST is complete.
2) Because of this no need to issue warning on unimplemeted
methods coming from the extended class protocols
because warning is issued when class definition is seen.
llvm-svn: 83326
|
| |
|
|
|
|
| |
<rdar://problem/7269631> Protocols on class extensions don't work
llvm-svn: 83322
|
| |
|
|
|
|
|
|
|
|
|
| |
Several of the existing methods were identical to their respective
specializations, and so have been removed entirely. Several more 'leaf'
optimizations were introduced.
The getAsFoo() methods which imposed extra conditions, like
getAsObjCInterfacePointerType(), have been left in place.
llvm-svn: 82501
|
| |
|
|
|
|
| |
valid location.
llvm-svn: 81487
|
| |
|
|
| |
llvm-svn: 81346
|
| |
|
|
|
|
| |
method definition with labels.
llvm-svn: 80381
|
| |
|
|
|
|
| |
selector name is for a @selector expression.
llvm-svn: 79776
|
| |
|
|
| |
llvm-svn: 79395
|
| |
|
|
|
|
|
|
|
|
|
|
| |
interfaces.
DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.
Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.
llvm-svn: 79392
|
| |
|
|
|
|
| |
implement NSCopying protocol in GC mode.
llvm-svn: 79008
|
| |
|
|
| |
llvm-svn: 78826
|
| |
|
|
|
|
| |
may not implement NSCopying protocol in -fobjc-gc[-only] mode.
llvm-svn: 78726
|
| |
|
|
| |
llvm-svn: 78102
|
| |
|
|
|
|
| |
on method type mismatches per Chris's comment.
llvm-svn: 78075
|
| |
|
|
|
|
|
| |
super class(s) and warn on any parameter
type mismatch if potentially unsafe.
llvm-svn: 78029
|
| |
|
|
|
|
| |
ObjCContainerDecl now is the root class for objc decls that contain methods.
llvm-svn: 77235
|
| |
|
|
|
|
|
|
| |
- Move Sema::ObjCQualifiedIdTypesAreCompatible(), Sema::QualifiedIdConformsQualifiedId(), and a couple helper functions to ASTContext.
- Change ASTContext::canAssignObjCInterfaces() to use ASTContext:: ObjCQualifiedIdTypesAreCompatible().
- Tweak several test cases to accommodate the new/improved type checking.
llvm-svn: 76830
|
| |
|
|
|
|
| |
Use ObjCInterfaceDecl::getCategoryClassMethod() and ObjCInterfaceDecl::getCategoryInstanceMethod() for the same functionality.
llvm-svn: 76510
|
| |
|
|
|
|
| |
ObjCInterfaceDecl::getImplementation().
llvm-svn: 76509
|
| |
|
|
|
|
|
|
|
|
|
|
| |
ASTContext::setObjCImplementation() which use a DenseMap to associate
an interface/category with its implementation (if one exists).
- Introduce ObjCInterfaceDecl::get/setImplementation() and ObjCCategoryDecl::get/setImplementation() that use the above methods.
- Add a compiler error for when a category is reimplemented.
llvm-svn: 76508
|
| |
|
|
|
|
| |
Convert all clients to use the new predicate on Type.
llvm-svn: 76076
|
| |
|
|
|
|
|
|
|
|
|
|
| |
The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches.
This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic.
By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time.
Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks.
llvm-svn: 75314
|
| |
|
|
| |
llvm-svn: 75178
|
| |
|
|
|
|
|
| |
Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating".
Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit.
llvm-svn: 74506
|
| |
|
|
|
|
| |
thereof. Patch by Anders Johnsen!
llvm-svn: 73641
|
| |
|
|
| |
llvm-svn: 73000
|
| |
|
|
| |
llvm-svn: 72871
|
| |
|
|
|
|
|
|
|
| |
and objects of this class are derived from 'NSProxy'.
Under such conditions, which means that every method possible is
implemented in the class, we should not issue "Method definition not found"
warnings.
llvm-svn: 72267
|
| |
|
|
| |
llvm-svn: 72210
|
| |
|
|
| |
llvm-svn: 71936
|
| |
|
|
|
|
|
| |
method is a qualified id which conforms to the matching type
of its method declaration.
llvm-svn: 71817
|
| |
|
|
|
|
| |
declarations.
llvm-svn: 71597
|
| |
|
|
| |
llvm-svn: 71267
|
| |
|
|
| |
llvm-svn: 71248
|
| |
|
|
|
|
| |
use of dot-syntax expression. This is to match gcc's.
llvm-svn: 71243
|
| |
|
|
|
|
| |
block pointer. Radar 6441502
llvm-svn: 71190
|
| |
|
|
|
|
|
| |
refers to the underlying class.
This is radar 6859726. Steve, please read the radar for my rational.
llvm-svn: 71181
|
| |
|
|
|
|
|
|
| |
return type and the selector. This is inconsistent with C functions
(where such attributes would be placed on the return type, not the the
FunctionDecl), and is inconsistent with what people are use to seeing.
llvm-svn: 70878
|
| |
|
|
|
|
|
|
| |
class/protocol and implementation which could be
an imm. implementation or down in the inheritance
hierarchy.
llvm-svn: 70568
|
| |
|
|
| |
llvm-svn: 70514
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
appear between the return type and the selector. This is a separate code path
from regular attribute processing, as we only want to (a) accept only a specific
set of attributes in this place and (b) want to distinguish to clients the
context in which an attribute was added to an ObjCMethodDecl.
Currently, the attribute 'objc_ownership_returns' is the only attribute that
uses this new feature. Shortly I will add a warning for 'objc_ownership_returns'
to be placed at the end of a method declaration.
llvm-svn: 70504
|
| |
|
|
|
|
| |
in an @synthesize diective, as it breaks few projects.
llvm-svn: 70441
|
| |
|
|
|
|
| |
and found in super class triggers a diagnostics.
llvm-svn: 70414
|
| |
|
|
| |
llvm-svn: 70145
|
| |
|
|
| |
llvm-svn: 69996
|
| |
|
|
|
|
|
|
| |
pools, combined). The methods in the global method pool are lazily
loaded from an on-disk hash table when Sema looks into its version of
the hash tables.
llvm-svn: 69989
|
| |
|
|
|
|
|
| |
updates name lookup so that we see through @compatibility_alias
declarations to their underlying interfaces.
llvm-svn: 69950
|
| |
|
|
| |
llvm-svn: 69945
|