Chris Lattner
f02ef3e6d4
implement a couple fixme's by implementing __extension__ properly.
...
llvm-svn: 57806
2008-10-20 06:45:43 +00:00
Steve Naroff
1d95e5a531
Final phase of converting BlockDecls over to DeclContext. This is unfortunately a largish/complex diff, however it was necessry to pass all the current block tests.
...
llvm-svn: 57337
2008-10-10 01:28:17 +00:00
Argyrios Kyrtzidis
2b1ef227f5
Handle ambiguities between expressions and type-ids that occur inside parentheses, e.g.:
...
sizeof(int()) -> "int()" is type-id
sizeof(int()+1) -> "int()+1" is expression.
llvm-svn: 57131
2008-10-05 19:56:22 +00:00
Steve Naroff
7a147c6a3c
Remove support for BlockExprExpr. For example...
...
^(expression) or ^(int arg1, float arg2)(expression)
...is no longer supported.
All block literals now require a compound statement.
llvm-svn: 56257
2008-09-16 23:11:46 +00:00
Steve Naroff
0ac012835f
Add parser/action support for block literal expressions.
...
Parser support for blocks is almost complete...just need to add support for the __block() storage class qualifier.
llvm-svn: 55495
2008-08-28 19:20:44 +00:00
Argyrios Kyrtzidis
857fcc2f8e
Add support for C++'s "type-specifier ( expression-list )" expression:
...
-The Parser calls a new "ActOnCXXTypeConstructExpr" action.
-Sema, depending on the type and expressions number:
-If the type is a class, it will treat it as a class constructor. [TODO]
-If there's only one expression (i.e. "int(0.5)" ), creates a new "CXXFunctionalCastExpr" Expr node
-If there are no expressions (i.e "int()" ), creates a new "CXXZeroInitValueExpr" Expr node.
llvm-svn: 55177
2008-08-22 15:38:55 +00:00
Eli Friedman
002ad1274b
Fix a minor crash-on-invalid.
...
llvm-svn: 55082
2008-08-20 22:07:34 +00:00
Argyrios Kyrtzidis
22fc2665e6
"Remove the 'else' since the code is fallthrough after it." - suggestion by Chris.
...
llvm-svn: 54952
2008-08-18 22:49:40 +00:00
Argyrios Kyrtzidis
69af9eebd7
Put (argument)-expression-list parsing in a separate function so that it can be re-used.
...
llvm-svn: 54851
2008-08-16 20:03:01 +00:00
Argyrios Kyrtzidis
16d63a727e
C++ casts, (static_cast. dynamic_cast, etc.) can have postfix-expression pieces.
...
llvm-svn: 54850
2008-08-16 19:45:32 +00:00
Argyrios Kyrtzidis
37779ade44
Move handling of postfix-expression suffixes out of ParseCXXThis and into ParseCastExpression.
...
No functionality change, this follows the convention of how postfix-expressions are handled.
llvm-svn: 54849
2008-08-16 19:34:46 +00:00
Chris Lattner
6307f19726
rename PreDefinedExpr -> PredefinedExpr
...
llvm-svn: 54605
2008-08-10 01:53:14 +00:00
Argyrios Kyrtzidis
16c04102ed
Add 'this' in the comments of Parser::ParseCastExpression to indicate that it is handled.
...
llvm-svn: 53665
2008-07-16 07:23:27 +00:00
Argyrios Kyrtzidis
832e898803
Simplify the parser a bit by looking at the next token without consuming it (by Preprocessor::LookNext):
...
-Remove ParseExpressionWithLeadingIdentifier and ParseAssignmentExprWithLeadingIdentifier.
-Separate ParseLabeledStatement from ParseIdentifierStatement.
llvm-svn: 53376
2008-07-09 22:53:07 +00:00
Argyrios Kyrtzidis
7bbb20e338
Add parsing support for C++ classes.
...
Note that Parser::ParseCXXMemberSpecification is temporarily disabled until the Sema support is in place.
Once ParseCXXMemberSpecification is enabled, the Parser/cxx-class.cpp test will pass.
llvm-svn: 52694
2008-06-24 22:12:16 +00:00
Chris Lattner
fd2fe8270e
handle the full assignment-expression grammar when using an
...
objc message send in an initializer expression.
llvm-svn: 51882
2008-06-02 21:31:07 +00:00
Chris Lattner
2fdcddd78d
Don't call into objc front-end when not parsing objc code. This avoids
...
crashes because objc types aren't set up right.
llvm-svn: 50884
2008-05-09 05:28:21 +00:00
Chris Lattner
521ff2b430
Use token lookahead to simplify some code that is rarely executed.
...
Since it is rare, the cost is not significant and we enjoy the
simplification.
llvm-svn: 49263
2008-04-06 05:26:30 +00:00
Chris Lattner
7a51313d8a
Make a major restructuring of the clang tree: introduce a top-level
...
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
2008-03-15 23:59:48 +00:00