summaryrefslogtreecommitdiffstats
path: root/clang/Parse
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* move IdentifierTable.h from liblex to libbasic.Chris Lattner2007-10-071-1/+0
| | | | llvm-svn: 42730
* 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
* This is the first patch toward supporting protocol conformingFariborz Jahanian2007-10-051-0/+4
| | | | | | | objective-c types. It also removes use of Scope* parameter in getObjCProtocolDecl. llvm-svn: 42649
* 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-043-17/+26
| | | | | | @try-statement. llvm-svn: 42611
* minor cleanupChris Lattner2007-10-031-8/+7
| | | | llvm-svn: 42596
* Finish renaming ObjC declaration actions.Steve Naroff2007-10-032-17/+14
| | | | | | | | | | | | 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-022-14/+14
| | | | | | | | | 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-292-5/+7
| | | | | | | 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-272-3/+14
| | | | | | | | 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
* Removed a few TODOs on things which are done.Fariborz Jahanian2007-09-261-3/+3
| | | | llvm-svn: 42358
* This patch introduces a new class to keep track of class implementation ↵Fariborz Jahanian2007-09-252-6/+17
| | | | | | | | | 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-212-5/+24
| | | | | | | | use of protocols referenced in @protocol declarations. llvm-svn: 42191
* Patch to parse objective-c's @try-statement and @throw-statement.Fariborz Jahanian2007-09-193-6/+104
| | | | 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-172-17/+50
| | | | 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
* Fixes/tweaks that prevent "defaults-i.m" from compiling.Steve Naroff2007-09-161-3/+6
| | | | | | | - Allow classnames as the receiver (removing a FIXME from ParseObjCMessageExpression). - Added a FIXME to ParseObjCMessageExpression()...we need to return a message expr AST node! llvm-svn: 42001
* Rename statement actions (from Parse-prefix to ActOn-prefix).Steve Naroff2007-09-163-38/+38
| | | | llvm-svn: 42000
* Rename expression actions (from Parse-prefix to ActOn-prefix).Steve Naroff2007-09-163-21/+21
| | | | llvm-svn: 41997
* Start converting Action methods from Parse-prefix to ActOn-prefix.Steve Naroff2007-09-155-18/+18
| | | | | | The previous naming scheme was confusing, since it resulted in both the Parser and Action modules having methods with the same name. In addition, the Action module never does any parsing... llvm-svn: 41986
* Rename Action::ParseRecordBody() to ProcessFieldDecls(), and add a ↵Steve Naroff2007-09-142-5/+4
| | | | | | | | | | visibility argument. Remove Action::ObjcAddVisibilityToIvars(). No need for an extra API when it is trivial to add this info to the previous hook. In general, I want to start migrating away from having Actions prefixed with "Parse" (which is confusing, since the Action API doesn't do any parsing, per se). llvm-svn: 41973
* Patch to store ivars into interface class object.Fariborz Jahanian2007-09-141-1/+1
| | | | llvm-svn: 41961
* Semantic analysis for objective-c ivars.Fariborz Jahanian2007-09-141-0/+2
| | | | llvm-svn: 41954
* Patch for collecting ivars before running action on them.Fariborz Jahanian2007-09-131-3/+11
| | | | llvm-svn: 41932
* Patch for building method declaration nodes. Also fixed a segfault in ↵Fariborz Jahanian2007-09-121-1/+1
| | | | | | | | cocoa.m due to use of @property. llvm-svn: 41880
* Fix the following bug submitted by Ted Kremenek:Steve Naroff2007-09-123-9/+8
| | | | | | | | | | | | | | | | | | | | | | void func() { int xx = xx; // incorrectly diagnosed 'xx' as an undeclared identifier. } This smallish bug resulted in a largish fix. Here are some highlights: - Needed to make sure ParseDeclarator is called *before* parsing any initializer. Removed the "Init" argument to ParseDeclarator. - Added AddInitializerToDecl() to the Action & Sema classes. In Sema, this hook is responsible for validating the initializer and installing it into the respective decl. - Moved several semantic checks from ParseDeclarator() to FinalizeDeclaratorGroup(). Previously, this hook was only responsible for reversing a list. Now it plays a much larger semantic role. All of the above changes ended up simplifying ParseDeclarator(), which is goodness... llvm-svn: 41877
* Some small tweaks to the recent Objc support...Steve Naroff2007-09-102-4/+4
| | | | llvm-svn: 41803
* Early patch to collect objective-c methods inserts them inFariborz Jahanian2007-09-101-21/+27
| | | | | | class object. llvm-svn: 41801
* The goal of this commit is to get just enough Sema support to recognize ↵Steve Naroff2007-09-063-60/+59
| | | | | | | | | | | Objective-C classes as types. That said, the AST nodes ObjcInterfaceDecl, ObjcInterfaceType, and ObjcClassDecl are *very* preliminary. The good news is we no longer need -parse-noop (aka MinimalActions) to parse cocoa.m. llvm-svn: 41752
* Start implementing Actions interface for ObjC classes, instance variables, ↵Steve Naroff2007-09-052-39/+82
| | | | | | | | and methods. Lot's of small changes to the parser. llvm-svn: 41732
* Patch for parsing objective-c style method calls.Fariborz Jahanian2007-09-051-1/+41
| | | | llvm-svn: 41731
* 1. Fix parsing of method prototype involving c-style argument declarations.Fariborz Jahanian2007-09-052-9/+46
| | | | | | | | 2. Fixes all allowable key-words used as selectors. 3. Template to do the messaging parse. 4. A test case for all allowable selector names. llvm-svn: 41723
* Fixed a typo pointed out by Anders Calrsson.Fariborz Jahanian2007-09-041-1/+1
| | | | llvm-svn: 41716
* Patch to parse objective-c's @compatibility_alias directive.Fariborz Jahanian2007-09-041-3/+21
| | | | llvm-svn: 41709
OpenPOWER on IntegriCloud