summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclObjC.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix <rdar://problem/6191148> [sema] Objective-C method lookup (at global ↵Steve Naroff2008-09-301-0/+15
| | | | | | | | scope) fails to handle overloaded selectors properly. Long standing bug in Sema::ActOnInstanceMessage(). We now warn when messaging an "id" with multiple method signatures in scope. The diags are a little verbose, however they can be streamlined if necessary. llvm-svn: 56843
* Improved fix for <rdar://problem/6247781> Parser rejecting properly ↵Steve Naroff2008-09-301-6/+11
| | | | | | | | mismatched properties. Needed to make sure the relaxed type checking only applies to "readonly" properties. llvm-svn: 56838
* Fix <rdar://problem/6247781> Parser rejecting properly mismatched properties.Steve Naroff2008-09-301-4/+4
| | | | llvm-svn: 56821
* Fix <rdar://problem/6253149> property declaration doesn't declare getter and ↵Steve Naroff2008-09-291-0/+21
| | | | | | setter. llvm-svn: 56785
* Fix <rdar://problem/6252129> implementation of method in category doesn't ↵Steve Naroff2008-09-281-0/+1
| | | | | | effectively declare it for methods below. llvm-svn: 56771
* Parser support for prefix __attribute__ on @protocol.Daniel Dunbar2008-09-261-1/+3
| | | | llvm-svn: 56642
* Sema support for format and noreturn attributes on Objective-C methods.Daniel Dunbar2008-09-261-2/+3
| | | | llvm-svn: 56640
* Implement type checking of Objective-C property attributes.Daniel Dunbar2008-09-231-9/+76
| | | | | | | | | | - readonly and readwrite are mutually exclusive. - assign, copy, and retain are mutually exclusive. - copy and retain are invalid on non-object types. - Warn about using default 'assign' property on object types (attempting to follow gcc behavior). llvm-svn: 56507
* Prevent invalid warnings about incomplete implementations for methodsDaniel Dunbar2008-09-041-12/+22
| | | | | | which are inherited from base clases or protocols. llvm-svn: 55790
* Add synthesized property methods to protocols and categories in Sema.Daniel Dunbar2008-08-271-12/+25
| | | | | | | | | | | | | | | | - It is not clear that this is the right approach, but this is at least consistent with how interfaces are handled. - This means NeXT now emits the correct metadata for properties in protocols. - This currently introduces a spurious warning involving inherited properties in protocols or categories; however, it also fixes some situations where we were failing to emit a warning. I will scrub this code tomorrow and fix this issue as well as number of other missed warnings / error situations that appear to exist. llvm-svn: 55407
* Move implicit Obj-C param creation into ObjCMethodDecl.Daniel Dunbar2008-08-261-19/+3
| | | | | | | | | | - Add ObjCMethodDecl::createImplicitParams. - Remove ObjCMethodDecl::set{Self,Cmd}Decl - Remove Sema::CreateImplicitParameter No (intended) functionality change. llvm-svn: 55356
* Rename ObjCPropertyImplDecl::PropertyImplKind (consistency)Daniel Dunbar2008-08-261-3/+3
| | | | | | | | | - Change enum name to Kind. - Change enum constants to English strings. Also, fix getPropertyImplementation (which probably should be renamed) llvm-svn: 55354
* Fix attributes on Obj-C interfaces & methods.Daniel Dunbar2008-08-201-2/+9
| | | | | | | - Drop MethodAttrs parameter to ObjCMethodDecl - Call ProcessDeclAttributeList for interface & method decls. llvm-svn: 55068
* Sema::ActOnStartProtocolInterface(): Make sure the protocol decl has a valid ↵Steve Naroff2008-08-131-1/+2
| | | | | | | | | | | | | | | | start location. The following case resulted in an invalid start location: // start location not being set for ObjCProtocolDecl AST (when a forward reference is in scope). @protocol Buggy; @protocol Buggy @optional - whatever; @end llvm-svn: 54740
* More #include cleaningDaniel Dunbar2008-08-111-1/+0
| | | | | | | | | | | - Kill unnecessary #includes in .cpp files. This is an automatic sweep so some things removed are actually used, but happen to be included by a previous header. I tried to get rid of the obvious examples and this was the easiest way to trim the #includes in one fell swoop. - We now return to regularly scheduled development. llvm-svn: 54632
* Minor #include cleaningDaniel Dunbar2008-08-111-0/+2
| | | | | | | - Drop TokenKinds.h from Action.h - Move DeclSpec.h from Sema.h into individual Sema .cpp files llvm-svn: 54625
* remove two uses of getCanonicalType I missed.Chris Lattner2008-07-271-1/+2
| | | | llvm-svn: 54114
* change more instances of QualType::getCanonicalType to callChris Lattner2008-07-261-2/+2
| | | | | | ASTContext::getCanonicalType instead (PR2189) llvm-svn: 54105
* remove a helper method.Chris Lattner2008-07-261-2/+4
| | | | llvm-svn: 54101
* Pull protocol resolution of out ActOnStartClassInterface, this is also the Chris Lattner2008-07-261-18/+3
| | | | | | last client of the old ParseObjCProtocolReferences, so it also removes it. llvm-svn: 54094
* refactor protocol resolution out of ActOnStartCategoryInterfaceChris Lattner2008-07-261-18/+3
| | | | llvm-svn: 54093
* pull protocol resolution out into ActOnStartProtocolInterface.Chris Lattner2008-07-261-21/+9
| | | | | | | This temporarily duplicates ParseObjCProtocolReferences, but it will be removed in the future. llvm-svn: 54092
* simplify some code.Chris Lattner2008-07-261-7/+15
| | | | llvm-svn: 54091
* remove duplicate error message.Chris Lattner2008-07-261-6/+6
| | | | llvm-svn: 54090
* Move fix in r54013 from the parser to sema.Steve Naroff2008-07-251-2/+5
| | | | llvm-svn: 54032
* minor cleanup to the actions interface to pass around SmallVectorImpl insteadChris Lattner2008-07-211-41/+42
| | | | | | | | | | | | | | | | | | | | | | of a specific smallvector size. Fix protocol lists to pass down proper location info, so we get diagnostics like this: t.m:3:35: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever' @interface NSWhatever : NSObject <NSCopying> ^ instead of this: t.m:3:44: error: cannot find protocol definition for 'NSCopying', referenced by 'NSWhatever' @interface NSWhatever : NSObject <NSCopying> ^ Add a new IdentifierLocPair typedef which is just a pair<IdentifierInfo*, SourceLocation> llvm-svn: 53883
* move two more lists of protocols over to use ObjCList<ObjCProtocolDecl>,Chris Lattner2008-07-211-15/+14
| | | | | | simplifying code along the way and fixing a problem and memory leak or two. llvm-svn: 53876
* add forward definition protocols to the protocol list for a class.Chris Lattner2008-07-211-13/+16
| | | | llvm-svn: 53864
* references to completely undeclared protocols should be errors. Chris Lattner2008-07-211-10/+16
| | | | | | References to forward definitions should be warnings. llvm-svn: 53863
* introduce a new ObjCList templated class and start moving Chris Lattner2008-07-211-3/+5
| | | | | | | various objc lists over to it. First up, the protocol list on ObjCInterfaceDecl. llvm-svn: 53856
* rename setReferencedProtocolList -> addReferencedProtocols toChris Lattner2008-07-211-1/+1
| | | | | | be consistent with ObjCInterfaceDecl. llvm-svn: 53852
* Change 'MDecl' to 'MD' to fix redefinition compiler error in MSVC++.Argyrios Kyrtzidis2008-07-211-3/+3
| | | | llvm-svn: 53849
* Switch initialization of the protocol list for an interface decl to useChris Lattner2008-07-211-20/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | the standard "set these as the list of protocols" interface instead of a strange "set this as the size and then set each one to the value" interface. The problem with the later is that it a) is completely different from everything else, b) is awkward, and c) doesn't handle the case when a referenced protocol is invalid: it set it to null. This meant that all clients downstream would have to handle null protocols in the protocol list, and empirically they didn't. Fix this by not setting invalid protocols in the referenced protocol list, fixing the crash on test/Sema/objc-interface-1.m While I'm at it, clean up some locations so that we produce: t.m:1:25: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever' @interface NSWhatever : NSObject <NSCopying> ~~~~~~~~~~~~~~~~~~~~~ ^ instead of: t.m:1:1: error: cannot find interface declaration for 'NSObject', superclass of 'NSWhatever' @interface NSWhatever : NSObject <NSCopying> ^ llvm-svn: 53846
* Fix warningsSeo Sanghyeon2008-07-051-1/+2
| | | | llvm-svn: 53141
* Replace CurFunctionDecl and CurMethodDecl with methods getCurFunctionDecl() ↵Argyrios Kyrtzidis2008-06-281-5/+3
| | | | | | and getCurMethodDecl() that return the appropriate Decl through CurContext. llvm-svn: 52852
* The assert at Sema::ObjCActOnStartOfMethodDef should check CurMethodDecl ↵Argyrios Kyrtzidis2008-06-251-1/+1
| | | | | | instead of CurFunctionDecl. llvm-svn: 52719
* Change self/_cmd to be instances of ImplicitParamDecl instead of ParmVarDecl.Chris Lattner2008-06-171-4/+4
| | | | | | Patch by David Chisnall! llvm-svn: 52422
* Second half of "fix" for <rdar://problem/5986085> clang on xcode: error: ↵Steve Naroff2008-06-051-3/+12
| | | | | | redefinition of 'XCElementToggler' as different kind of symbol llvm-svn: 52024
* Fixed a recent test regression from last night (r51976).Steve Naroff2008-06-051-4/+4
| | | | llvm-svn: 52006
* Fix <rdar://problem/5986833> clang on xcode: incompatible type returning ↵Steve Naroff2008-06-051-2/+4
| | | | | | | | | 'void', expected 'int'. - Changed Sema::ObjCActOnStartOfMethodDef() to more accurately type "self" in factory methods. - Changed Sema::ActOnInstanceMessage() to use the new type to restrict the lookup. llvm-svn: 52005
* Fix trivial crasher and downgrade an error to warning (to match GCC).Steve Naroff2008-06-051-2/+2
| | | | llvm-svn: 51976
* Make sure the source location for @property points the the @-sign (not the ↵Steve Naroff2008-05-221-0/+4
| | | | | | | | decl spec). Also added a FIXME related to how we represent @properties in the ObjCInterfaceDecl AST. llvm-svn: 51450
* Synthesized getter/setter method declarations need not haveFariborz Jahanian2008-05-071-1/+2
| | | | | | | an implementation. This fixes couple of failing prperty tests caused by my previous patch. llvm-svn: 50830
* This patch introduces declaration of getter methods for ObjC2'sFariborz Jahanian2008-05-071-8/+13
| | | | | | | properties. Couple of property tests will fail with this patch. Will fix them next. llvm-svn: 50818
* Patch to refactor setter/getter names of property attributes into SelectorFariborz Jahanian2008-05-061-2/+4
| | | | | | | (was IdentifierInfo * before). This will make method declartations whole lot easier. llvm-svn: 50747
* percolate @optional/@required protocols down to ASTs forFariborz Jahanian2008-05-051-1/+7
| | | | | | properties declared in the protocol. llvm-svn: 50662
* This patch is about merging ObjC2's properties declared in classFariborz Jahanian2008-05-021-12/+69
| | | | | | | protocols into class's property list and performing semantics on them for while doing so. llvm-svn: 50587
* Patch to match and issue diagnostics on property type mismatch.Fariborz Jahanian2008-05-011-8/+4
| | | | llvm-svn: 50532
* More ObjC2 property semantics work. Work in progress.Fariborz Jahanian2008-05-011-20/+30
| | | | llvm-svn: 50508
* Use PushOnScopeChains to introduce a decl into scope.Argyrios Kyrtzidis2008-04-271-4/+2
| | | | llvm-svn: 50320
OpenPOWER on IntegriCloud