aboutsummaryrefslogtreecommitdiff
path: root/Parse
AgeCommit message (Collapse)Author
2007-09-01Patch to parse @implementation prologue, method definitions,Fariborz Jahanian
objc2's @synthesize and @dynamic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41667 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Fix a bug/missing-feature Ted noticed: the 'unused' warning should notChris Lattner
warn about the last stmt in a stmtexpr, f.e. there should be no warning for: int maxval_stmt_expr(int x, int y) { return ({int _a = x, _b = y; _a > _b ? _a : _b; }); } git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41655 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31Author: F. JahanianFariborz Jahanian
Log: Implement parsing of objective-c's new @property declaration. Modified: include/clang/Basic/DiagnosticKinds.def include/clang/Parse/Parser.h Parse/ParseObjc.cpp Parse/Parser.cpp git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41644 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31don't turn semantic errors into parse errors.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41638 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-31fix some memory leaks when recovering.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41637 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30Pass the location of the type.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41612 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30make sure to parse postfix expression suffixes after builtinChris Lattner
primary expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41607 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-30add an action callback for __builtin_offsetofChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41606 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-29cleanup context-sensitive objc keyword recognition. Patch by Fariborz Jahanian.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41583 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-28Tweak declaration...Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41542 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-28Implement more thoughful error recovery when dealing with bogus declarator ↵Steve Naroff
types. For example, the following code was resulting in spurious warnings. This was the result of Sema::GetTypeForDeclarator() synthesizing a type to hand back to the caller (in this case, "int []", instead of "struct s[]", which is invalid). struct s; struct s* t (struct s z[]) { // expected-error {{array has incomplete element type}} return z; } Strategy: Flag the error in Declarator/DeclaratorChunk. This info is later stored in the ParmVarDecl. If the decl is referenced, Sema::ParseIdentifierExpr() will check if the type is invalid. If so, it quietly returns "true", without instantiating a DeclRefExpr. This seems to work nicely. If Chris is happy with the approach, I will generalize this to all VarDecls. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41521 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27C++ allows empty enum list.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41498 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27extwarn about decls intermixed with code in c89 mode.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41477 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-27implement a fixme: __extension__ marker on decls in compound stmts.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41473 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-26Fix test/Parser/if-scope-*.c. Patch by Neil Booth!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41471 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-26Break the assumption that any sort of scope (e.g. a loop scope) can Chris Lattner
hold declarations. Instead, introduce a new "DeclScope" scope type that holds them explicitly. For now, all scopes have this bit, but in the future we can use them to fix some issues Neil noticed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41431 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-25read and ignore the body of a namespace.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41403 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-25refactor enough of the top-level parsing logic to parse andChris Lattner
ignore 'namespace foo {}' git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41400 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-25C++ explicitly allows an empty source file.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41399 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-23- Cleanup "hack" comment and fix typos.Steve Naroff
- Use getLang().ObjC2 when appropriate. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41333 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-23Add helper functions Token::isObjCAtKeyword() and Token::getObjCKeywordID().Steve Naroff
Convert all clients to the new cleaner, more robust API. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41330 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-23As suggested by Chris, use MatchRHSPunctuation instead of manually looking ↵Anders Carlsson
for a right parenthesis when parsing @encode() and @protocol(). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41321 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-23Parse ObjC @protocol expressions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41320 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22With this commit, we now successfully parse "Cocoa.h"!Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41303 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Add support for parsing protocols.Steve Naroff
Now we can parse quite a bit of "Foundation.h" (a couple bugs remain). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41300 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Finish up method prototype parsing.Steve Naroff
Next step...starting installing class names into the type namespace (so we can start parsing Cocoa headers). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41283 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Add support for parsing method prototypes (and other stuff required by ↵Steve Naroff
@interface). Still need to finish Parser::ParseObjCMethodDecl(). Before I do, I need to do a minor refactoring of ParseDeclarationOrFunctionDefinition(), to disallow function definitions. At the moment, @inteface allows function defs (which is incorrect). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41275 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Parse @encode expressions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41273 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22update todo markersChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41267 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22optimize scope push/pop to avoid work in the common case.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41265 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Fix the scoping issue Neil pointed out for the rest ofChris Lattner
the selection statements and iteration statements. Add spec citations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41264 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-22Fix a nasty C99 scope issue that Neil pointed out (for ifs)Chris Lattner
This fixes test/Parser/control-scope.c git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41263 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21Implement parsing for objc instance variables.Steve Naroff
Next step, method... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41251 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21Don't remove the grammar construct, just the TODO.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41245 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21Tweak error recovery for missing semicolon after decl. For this:Chris Lattner
void foo() { int x if (x) { } } We now emit: a.c:5:3: error: parse error if (x) { ^ 1 diagnostic generated. instead of: a.c:5:3: error: parse error if (x) { ^ a.c:9:1: error: expected '}' ^ 2 diagnostics generated. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41243 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21Remove objc-string-literal since it's been implemented now.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41241 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21Implement parsing and code generation of Objective-C string literals.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41238 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-20Added Parser::ParseStructDeclaration() as a result of refactoring ↵Steve Naroff
Parser::ParseStructUnionBody(). Motivation: Objective-C can now share this rule. It also makes Parser::ParseStructUnionBody() a bit smaller/cleaner.. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41201 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-20Start parsing ObjC classes/categories!Steve Naroff
Next step, refactor Parser::ParseStructUnionBody() so that struct declarations can be shared with Objective-C (for declaring instance variables). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41200 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-10add support for a top-level __extension__ marker, implementing a todo.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41004 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-09minor cleanupsChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40963 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-09__attribute__ starts a declspec.Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40962 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-03Implement __builtin_choose_expr.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40794 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-02Tidy up Parser::ParseTypeofSpecifier()...implement FIXME and minor restructure.Steve Naroff
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40713 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01- Finish hooking up support for __builtin_types_compatible_p().Steve Naroff
- Fix type printing code for recently added TypeOfExpr/TypeOfType. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40700 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-01Add AST/Sema support for __builtin_types_compatible_p (a GNU extension).Steve Naroff
Todo...still need to call the action from the parser... git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40693 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-31Tighten up Parser::ParseTypeofSpecifier().Steve Naroff
Add some more tests to typeof.c. Also added a couple of missing "expect" attributes that caused the test to fail. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40656 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-31Add parsing and AST support for GNU "typeof".Steve Naroff
Many small changes to lot's of files. Still some FIXME's, however the basic support is in place. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40631 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-25Fix a couple of bugs, add some new cool stuff.Chris Lattner
1. Fix a todo in Parser::ParseTag, to recover better. On code like that in test/Sema/decl-invalid.c it causes us to return a single error instead of multiple. 2. Fix an error in Sema::ParseDeclarator, where it would crash if the declarator didn't have an identifier. Instead, diagnose the problem. 3. Start adding infrastructure to track the range of locations covered by a declspec or declarator. This is mostly implemented for declspec, but could be improved, it is missing for declarator. Thanks to Neil for pointing out this crash. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40482 91177308-0d34-0410-b5e6-96231b3b80d8
2007-07-24Fix a comment, patch by Kevin Andre!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40466 91177308-0d34-0410-b5e6-96231b3b80d8