| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
(minimal printing), Derive ObjcClassDecl from Decl. Ted may want to
take note of the change I made to CFGRecStmtDeclVisitor.h
llvm-svn: 42764
|
|
|
|
| |
llvm-svn: 42730
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
objective-c types. It also removes use of Scope* parameter in
getObjCProtocolDecl.
llvm-svn: 42649
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
|
|
| |
@try-statement.
llvm-svn: 42611
|
|
|
|
| |
llvm-svn: 42596
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
| |
more to do).
Remove Action::ObjCStartCategoryInterface/ObjCFinishInterface - they are unused.
.
llvm-svn: 42559
|
|
|
|
|
|
|
|
| |
related to
unimplemented methods in category implementation.
llvm-svn: 42531
|
|
|
|
|
|
| |
MultiKeywordSelector::getName().
llvm-svn: 42524
|
|
|
|
|
|
|
| |
September 28, 2007 4:39:24 PM PDT
Please let me know if I missed anything.
llvm-svn: 42473
|
|
|
|
|
|
|
| |
There is still an issue if doing ScopedLookup is an overkill and we can
just access the decl using the identifier.
llvm-svn: 42463
|
|
|
|
|
|
| |
friend, move some methods around.
llvm-svn: 42456
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 42416
|
|
|
|
|
|
|
|
| |
with method implementation declarations .
It checks and warns on those methods declared in class interface and not implemented.
llvm-svn: 42412
|
|
|
|
| |
llvm-svn: 42396
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 42358
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
use of
protocols referenced in @protocol declarations.
llvm-svn: 42191
|
|
|
|
| |
llvm-svn: 42148
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 42104
|
|
|
|
|
|
| |
Moves such argument as the last argument and uses defaul value.
llvm-svn: 42073
|
|
|
|
|
|
| |
instead for @protocol method decls.
llvm-svn: 42070
|
|
|
|
| |
llvm-svn: 42060
|
|
|
|
| |
llvm-svn: 42059
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 42028
|
|
|
|
|
|
|
| |
- 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
|
|
|
|
| |
llvm-svn: 42000
|
|
|
|
| |
llvm-svn: 41997
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 41961
|
|
|
|
| |
llvm-svn: 41954
|
|
|
|
| |
llvm-svn: 41932
|
|
|
|
|
|
|
|
| |
cocoa.m due
to use of @property.
llvm-svn: 41880
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 41803
|
|
|
|
|
|
| |
class object.
llvm-svn: 41801
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
and methods.
Lot's of small changes to the parser.
llvm-svn: 41732
|
|
|
|
| |
llvm-svn: 41731
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
llvm-svn: 41716
|
|
|
|
| |
llvm-svn: 41709
|