summaryrefslogtreecommitdiffstats
path: root/clang/lib/Parse/ParseStmt.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Kick out the proof-of-concept ASTOwner and replace it with ASTOwningResultSebastian Redl2008-12-091-32/+32
| | | | llvm-svn: 60791
* Consistently use smart pointers for stmt and expr nodes in parser local ↵Sebastian Redl2008-12-091-167/+136
| | | | | | variables. llvm-svn: 60761
* Use RAII objects to ensure proper destruction of expression and statement ↵Sebastian Redl2008-11-251-18/+38
| | | | | | AST nodes in the parser in most cases, even on error. llvm-svn: 60057
* make the 'to match this' diagnostic a note.Chris Lattner2008-11-231-1/+1
| | | | llvm-svn: 59921
* Added operator overloading for unary operators, post-increment, andDouglas Gregor2008-11-191-1/+2
| | | | | | | | | | | | | post-decrement, including support for generating all of the built-in operator candidates for these operators. C++ and C have different rules for the arguments to the builtin unary '+' and '-'. Implemented both variants in Sema::ActOnUnaryOp. In C++, pre-increment and pre-decrement return lvalues. Update Expr::isLvalue accordingly. llvm-svn: 59638
* Change a couple of the Parser::Diag methods to return DiagnosticInfoChris Lattner2008-11-181-13/+13
| | | | | | | | | and let the clients push whatever they want into the DiagnosticInfo instead of hard coding a few forms. Also switch various clients to use Diag(Tok, ...) instead of Diag(Tok.getLocation(), ...) as the canonical form to simplify the code a bit. llvm-svn: 59509
* Fix a couple of suboptimalities in error recovery.Chris Lattner2008-11-131-8/+11
| | | | | | | | | | | | | | | | | | | 1. In the top level of ParseStatementOrDeclaration, don't eat a } if we just parsed a statement if it list there. Also, don't even bother emitting an error about a missing semicolon if the statement had a bug (an rbrace is fine). 2. In do/while parsing, don't require a 'while' to be present if the do body didn't parse. This allows us to generate a clean diagnostic for this code: t.c:1:22: error: expected expression void foo (void) { do . while (0); } ^ Thanks to Neil for pointing this out. llvm-svn: 59256
* simplify some other code for __extension__ processing.Chris Lattner2008-10-201-7/+5
| | | | llvm-svn: 57807
* Disambiguate between a declaration or an expression, in the ↵Argyrios Kyrtzidis2008-10-051-1/+1
| | | | | | 'for-init-statement' part of a 'for' statement. llvm-svn: 57112
* Resolve ambiguous C++ statements (C++ 6.8p1).Argyrios Kyrtzidis2008-10-051-2/+2
| | | | | | 'ParseTentative.cpp' implements the functionality needed to resolve ambiguous C++ statements, to either a declaration or an expression, by "tentatively parsing" them. llvm-svn: 57084
* Add comments about C++ clause 3.3.2p4 that mentions that the condition ↵Argyrios Kyrtzidis2008-09-111-0/+16
| | | | | | declaration should be local to an if/switch/while/for statement. llvm-svn: 56134
* Fix do-while scoping in C++.Argyrios Kyrtzidis2008-09-111-1/+7
| | | | llvm-svn: 56095
* Revert r56078, getLang().C99 being true in C++ is a bug that will be fixed.Argyrios Kyrtzidis2008-09-111-12/+91
| | | | llvm-svn: 56090
* -getLang().C99 is true in C++ too, remove the use of the C99orCXX variable.Argyrios Kyrtzidis2008-09-101-91/+12
| | | | | | | | -Scoping in C99 works good for C++ too, remove the C++-specific comments. If someone thinks that the C++-specific comments are necessary for clarification, let me know and I'll put them back on. llvm-svn: 56078
* Add some C++-specific comments in the parsing methods of if/switch/while/for.Argyrios Kyrtzidis2008-09-101-0/+71
| | | | llvm-svn: 56060
* Implement parser support for the 'condition' part of C++ ↵Argyrios Kyrtzidis2008-09-091-23/+67
| | | | | | | | selection-statements and iteration-statements (if/switch/while/for). Add new 'ActOnCXXConditionDeclarationExpr' action, called when the 'condition' is a declaration instead of an expression. llvm-svn: 56007
* Support C++'s declaration-statement.Argyrios Kyrtzidis2008-09-071-1/+2
| | | | llvm-svn: 55888
* Use of NextToken() makes ParseIdentifierStatement unnecessary.Argyrios Kyrtzidis2008-07-121-87/+7
| | | | | | Simplify the parser by removing Parser::ParseIdentifierStatement. llvm-svn: 53520
* Simplify the parser a bit by looking at the next token without consuming it ↵Argyrios Kyrtzidis2008-07-091-30/+41
| | | | | | | | | (by Preprocessor::LookNext): -Remove ParseExpressionWithLeadingIdentifier and ParseAssignmentExprWithLeadingIdentifier. -Separate ParseLabeledStatement from ParseIdentifierStatement. llvm-svn: 53376
* Have Parser::FuzzyParseMicrosoftAsmStatement() return the null statement (';'). Steve Naroff2008-04-071-1/+1
| | | | llvm-svn: 49349
* Make a major restructuring of the clang tree: introduce a top-levelChris Lattner2008-03-151-0/+1159
lib dir and move all the libraries into it. This follows the main llvm tree, and allows the libraries to be built in parallel. The top level now enforces that all the libs are built before Driver, but we don't care what order the libs are built in. This speeds up parallel builds, particularly incremental ones. llvm-svn: 48402
OpenPOWER on IntegriCloud