| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
implementation mismatch in their qualifiers only.
This will match similar behavior in c/c++ and
fixes radar 7211653.
llvm-svn: 89220
|
|
|
|
|
|
| |
@class.
llvm-svn: 89170
|
|
|
|
|
|
| |
Action::ActOnForwardClassDeclaration().
llvm-svn: 89162
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
current DeclContext. These "imaginary" declarations pose issues for
clients searching DeclContext for actual declarations. Instead,
register them for name lookup, and add the ObjCInterfaceDecl later to
the DeclContext when we hit an actual @interface declaration.
This also fixes a bug where the invariant that the Decls in a
DeclContext are sorted in order of their appearance is no longer
violated. What could happen is that an @class causes an
ObjCInterfaceDecl to get added first to the DeclContext, then the
ObjCClassDecl itself is added, and then later the SourceLocation of
the ObjCInterfaceDecl is updated with the correct location (which is
later in the file). This breaks an assumed invariant in
ResolveLocation.cpp (and possibly other clients).
llvm-svn: 89160
|
|
|
|
|
|
| |
(Radar 6815425).
llvm-svn: 89124
|
|
|
|
|
|
|
|
| |
gracefully, on par with gcc, by: Issuing a warning,
doing final sematinc check of its definitions and generating
its meta-data.
llvm-svn: 88934
|
|
|
|
|
|
|
| |
either both synthesized or bith user defined.
Implements radar 6557233.
llvm-svn: 86887
|
|
|
|
|
|
| |
(Ted's feedback).
llvm-svn: 86702
|
|
|
|
|
|
|
|
|
|
| |
specification of 'assign' (no warning to be issued),
when a continuation class makes a 'readonly' attribute
'readwrite' but also specifies the 'assign' attribute.
(this matches gcc's behavior and prevents exessive
warnings)/
llvm-svn: 86297
|
|
|
|
|
|
|
|
|
|
|
|
| |
appears in a deprecated context. In the new strategy, we emit the warnings
as usual unless we're currently parsing a declaration, where "declaration" is
restricted to mean a decl group or a few special cases in Objective C. If
we *are* parsing a declaration, we queue up the deprecation warnings until
the declaration has been completely parsed, and then emit them only if the
decl is not deprecated.
We also standardize the bookkeeping for deprecation so as to avoid special cases.
llvm-svn: 85998
|
|
|
|
|
|
|
| |
class must match those of same property declared
in its primary class. (Fixes radar 7352425)
llvm-svn: 85843
|
|
|
|
|
|
|
| |
change a readonly property declared in the class (and its inherited protocols)
to writable property. (Fixes radar 7350645).
llvm-svn: 85836
|
|
|
|
|
|
| |
in its class implementation instead of crashing. Fixes radar 7350345.
llvm-svn: 85813
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|