summaryrefslogtreecommitdiffstats
path: root/clang/Parse/ParseObjc.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 1) More additions for objective-c's qualifier type.Fariborz Jahanian2007-10-311-9/+14
| | | | | | 2) Fixed a test failure (which should have failed all along!). llvm-svn: 43589
* Fix two rewriter bugs:Steve Naroff2007-10-311-5/+5
| | | | | | | | | | | | | | | | | | - For @class, don't generate multiple typedefs. - Handle the following edge case interface... @interface NSMiddleSpecifier : NSObject {} @end ...which was incorrectly being rewritten to... struct _interface_NSMiddleSpecifier { struct _interface_NSObject _NSObject; }; {} llvm-svn: 43582
* More infrastructure to recognize objective-c's type qualifiers (in,inout, etc.)Fariborz Jahanian2007-10-311-14/+3
| | | | llvm-svn: 43580
* - Add location info to category/protocol AST'sSteve Naroff2007-10-301-1/+2
| | | | | | - Rewrite categories. llvm-svn: 43501
* Remove a couple FIXME's for rewriting ObjC interfaces (which are now being ↵Steve Naroff2007-10-301-4/+5
| | | | | | rewritten properly). llvm-svn: 43494
* More support for rewriting ObjC intefaces. Still some edge cases to handle...Steve Naroff2007-10-301-8/+16
| | | | llvm-svn: 43493
* Remove a bunch of TODO's that have been done for quite some time...Steve Naroff2007-10-291-5/+5
| | | | llvm-svn: 43476
* This commit contains lot's of small tweaks to how we pass around and store ↵Steve Naroff2007-10-291-10/+16
| | | | | | SourceLocation's for interfaces/protocols/categories/implementations. llvm-svn: 43475
* Start rewriting ObjC interfaces. As a start, we comment out all the methods. ↵Steve Naroff2007-10-261-7/+10
| | | | | | This involved refining how the parser/AST passes/manages SourceLocations for ObjcMethodDecl's. llvm-svn: 43404
* add NL at end of fileGabor Greif2007-10-191-1/+1
| | | | llvm-svn: 43178
* Implementation of AST for @protocol expression.Fariborz Jahanian2007-10-171-4/+3
| | | | llvm-svn: 43075
* Fix location processing of @selector: the range should include the @ sign.Fariborz Jahanian2007-10-161-5/+5
| | | | llvm-svn: 43051
* Fix location processing of @encode: the range should include the @ sign.Chris Lattner2007-10-161-12/+12
| | | | | | @selector probably gets this wrong also. llvm-svn: 43048
* Fix problem dumping/printing method names with null selector.Fariborz Jahanian2007-10-161-4/+0
| | | | llvm-svn: 43039
* Patch to implement AST generation for objective-c's @selector expression.Fariborz Jahanian2007-10-161-4/+12
| | | | llvm-svn: 43038
* Patch to parse @selector expressions.Fariborz Jahanian2007-10-151-0/+42
| | | | llvm-svn: 43022
* Fix a parser bug with message expressions - need to call ↵Steve Naroff2007-10-151-1/+1
| | | | | | | | | | ParsePostfixExpressionSuffix(). Now were correctly allow the following... i = [str rangeOfString:@"]"].length; llvm-svn: 43012
* - Added Sema::AddFactoryMethodToGlobalPool and ↵Steve Naroff2007-10-141-3/+4
| | | | | | | | | | | Sema::AddInstanceMethodToGlobalPool and DenseMaps. This will allow us to efficiently lookup a method from a selector given no type information (for the "id" data type). - Fixed some funky "} else {" indentation in Sema::ActOnAddMethodsToObjcDecl(). I'd prefer we stay away from this style...it wastes space and isn't any easier to read (from my perspective, at least:-) - Changed Parser::ParseObjCInterfaceDeclList() to only call Action::ActOnAddMethodsToObjcDecl() when it actually has methods to add (since most interface have methods, this is a very minor cleanup). llvm-svn: 42957
* This patch implementa objective-c's @compatibilty-alias declaration.Fariborz Jahanian2007-10-111-4/+11
| | | | llvm-svn: 42883
* Patch to create protocol conforming class types.Fariborz Jahanian2007-10-111-10/+11
| | | | llvm-svn: 42856
* Remove Scope argument from ObjC actions that either don't need it or can now ↵Steve Naroff2007-10-101-7/+7
| | | | | | | | use TUScope. Also improve a recently added comment. llvm-svn: 42826
* swtich to Token::is/isNotChris Lattner2007-10-091-100/+98
| | | | llvm-svn: 42798
* Added a new class for Interfaces qualified by protocol list.Fariborz Jahanian2007-10-081-0/+15
| | | | | | | Protocols are now sorted and made unique in the list. Enhanced pretty printer for @interface (So, I can see the protocol list). llvm-svn: 42776
* Several small patches to do pretty printing for objective-c top-level declsFariborz Jahanian2007-10-081-2/+2
| | | | | | | (minimal printing), Derive ObjcClassDecl from Decl. Ted may want to take note of the change I made to CFGRecStmtDeclVisitor.h llvm-svn: 42764
* simplify the interfaces to create selectors: getSelector can take any Chris Lattner2007-10-071-130/+125
| | | | | | | | number of arguments now and does the right thing, but the nullary/unary accessors are preserved as convenience functions. This allows us to slightly simplify clients. llvm-svn: 42716
* Layering refinements for selectors (suggested by Chris). Specifics...Steve Naroff2007-10-051-93/+16
| | | | | | | | | | | - Add SelectorTable, which enables us to remove MultiKeywordSelector from the public header. - Remove FoldingSet from IdentifierInfo.h and Preprocessor.h. - Remove Parser::ObjcGetUnarySelector and Parser::ObjcGetKeywordSelector, they are subsumed by SelectorTable. - Add MultiKeywordSelector to IdentifierInfo.cpp. - Move a bunch of selector related methods from ParseObjC.cpp to IdentifierInfo.cpp. - Added some comments. llvm-svn: 42643
* this patch accomodates clattner's comments on expression processing in ↵Fariborz Jahanian2007-10-041-7/+7
| | | | | | @try-statement. llvm-svn: 42611
* Finish renaming ObjC declaration actions.Steve Naroff2007-10-031-15/+12
| | | | | | | | | | | | Add comments. Switch to new indentation style for the Action class. Since many actions take many arguments, the new style will... - make it easier to add/remove arguments without messing up the indentation... - make it easier to add comments to each argument (see ActOnMethodDeclaration for an example)... - in general, just makes it easier to see what is being passed. The rest of Actions will be converted "lazily"...there is no immediate need to hack all the existing methods. llvm-svn: 42587
* Rename several ObjC action methods to use the "ActOn" prefix (still a few ↵Steve Naroff2007-10-021-9/+9
| | | | | | | | | more to do). Remove Action::ObjCStartCategoryInterface/ObjCFinishInterface - they are unused. . llvm-svn: 42559
* This patch introduces the ObjcCategoryImplDecl class and does the checking ↵Fariborz Jahanian2007-10-021-1/+4
| | | | | | | | related to unimplemented methods in category implementation. llvm-svn: 42531
* Use Identifier::getLength() instead of strlen() in Selector::getName() and ↵Steve Naroff2007-10-021-2/+2
| | | | | | MultiKeywordSelector::getName(). llvm-svn: 42524
* This patch fixes all issues mentioned in clattner's feedback of Fariborz Jahanian2007-09-291-1/+0
| | | | | | | September 28, 2007 4:39:24 PM PDT Please let me know if I missed anything. llvm-svn: 42473
* Removed use of hash table for class decls and do a name look up directly.Fariborz Jahanian2007-09-291-4/+5
| | | | | | | There is still an issue if doing ScopedLookup is an overkill and we can just access the decl using the identifier. llvm-svn: 42463
* Add some comments to MultiKeywordSelector, make all methods private, add a ↵Steve Naroff2007-09-281-0/+52
| | | | | | friend, move some methods around. llvm-svn: 42456
* Yesterday I discovered that 78% of all selectors in "Cocoa.h" take 0/1 argument.Steve Naroff2007-09-281-47/+30
| | | | | | | | | | | | This motivated implementing a devious clattner inspired solution:-) This approach uses a small value "Selector" class to point to an IdentifierInfo for the 0/1 case. For multi-keyword selectors, we instantiate a MultiKeywordSelector object (previously known as SelectorInfo). Now, the incremental cost for selectors is only 24,800 for Cocoa.h! This saves 156,592 bytes, or 86%!! The size reduction is also the result of getting rid of the AST slot, which was not strictly necessary (we will associate a selector with it's method using another table...most likely in Sema). This change was critical to make now, before we have too many clients. I still need to add some comments to the Selector class...will likely add later today/tomorrow. llvm-svn: 42452
* Patch to use case-stmt for keywords used as selectgor names.Fariborz Jahanian2007-09-271-6/+45
| | | | llvm-svn: 42416
* Patch for method implementation. It populates ObjcImplementationDecl object ↵Fariborz Jahanian2007-09-271-3/+13
| | | | | | | | with method implementation declarations . It checks and warns on those methods declared in class interface and not implemented. llvm-svn: 42412
* Fix some use of uninit variables issues, reported by Anton.Chris Lattner2007-09-271-1/+1
| | | | llvm-svn: 42396
* Add SelectorInfo (similar in spirit to IdentifierInfo). The key difference ↵Steve Naroff2007-09-271-40/+90
| | | | | | | | | | | | | | | | | | | | is SelectorInfo is not string-oriented, it is a unique aggregate of IdentifierInfo's (using a folding set). SelectorInfo also has a richer API that simplifies the parser/action interface. 3 noteworthy benefits: #1: It is cleaner. I never "liked" storing keyword selectors (i.e. foo:bar:baz) in the IdentifierTable. #2: It is more space efficient. Since Cocoa keyword selectors can be quite long, this technique is space saving. For Cocoa.h, pulling the keyword selectors out saves ~180k. The cost of the SelectorInfo data is ~100k. Saves ~80k, or 43%. #3: It results in many API simplifications. Here are some highlights: - Removed 3 actions (ActOnKeywordMessage, ActOnUnaryMessage, & one flavor of ObjcBuildMethodDeclaration that was specific to unary messages). - Removed 3 funky structs from DeclSpec.h (ObjcKeywordMessage, ObjcKeywordDecl, and ObjcKeywordInfo). - Removed 2 ivars and 2 constructors from ObjCMessageExpr (fyi, this space savings has not been measured). I am happy with the way it turned out (though it took a bit more hacking than I expected). Given the central role of selectors in ObjC, making sure this is "right" will pay dividends later. Thanks to Chris for talking this through with me and suggesting this approach. llvm-svn: 42395
* This patch introduces a new class to keep track of class implementation ↵Fariborz Jahanian2007-09-251-4/+14
| | | | | | | | | info. It also adds more semantic checks for class and protocol declarations. Test cases are good indications of kind of checking being done in this patch. llvm-svn: 42311
* This patch instantiates objects for forward protocols and in general handles ↵Fariborz Jahanian2007-09-211-5/+7
| | | | | | | | use of protocols referenced in @protocol declarations. llvm-svn: 42191
* Patch to parse objective-c's @try-statement and @throw-statement.Fariborz Jahanian2007-09-191-2/+72
| | | | llvm-svn: 42148
* Progress on message expressions...Steve Naroff2007-09-181-6/+8
| | | | | | | | | | | - Add ObjcMessageExpr AST node and associated constructors. - Add SourceLocation's to ActOnKeywordMessage/ActOnUnaryMessage API. - Instantiate message expressions... - Replace alloca usage with SmallString. Next step, installing a correct type, among other tweaks... llvm-svn: 42116
* Patch for object creation and handling of category declarations.Fariborz Jahanian2007-09-181-2/+8
| | | | llvm-svn: 42104
* Uses more description name for method implementation kind argument.Fariborz Jahanian2007-09-181-18/+16
| | | | | | Moves such argument as the last argument and uses defaul value. llvm-svn: 42073
* Patch to remove ObjcProtoMethodDecl and use ObjcMethodDeclFariborz Jahanian2007-09-171-5/+4
| | | | | | instead for @protocol method decls. llvm-svn: 42070
* Patch to add objective-c's @protocl type declaration.Fariborz Jahanian2007-09-171-17/+38
| | | | llvm-svn: 42060
* Finish defining Action API for message expressions.Steve Naroff2007-09-171-4/+11
| | | | llvm-svn: 42059
* - Refactored ObjcKeywordInfo into ObjcKeywordInfo, ObjcKeywordDecl, and ↵Steve Naroff2007-09-171-15/+44
| | | | | | | | | | | | ObjcKeywordMessage. - Removed helper ObjcGetSelectorInfo(), moving the code directly into ObjcBuildMethodDeclaration(). - Many refinements to ParseObjCMessageExpression(). - Add ActOnMessageExpression(). Next step, finish the message actions and (finally) create/instantiate an ObjcMessageExpr AST. llvm-svn: 42050
* Fix a few 80 column violations.Steve Naroff2007-09-171-5/+4
| | | | llvm-svn: 42028
OpenPOWER on IntegriCloud