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
Argyrios Kyrtzidis
df788f4eea
Found a subtle bug caused by an implicit enum-to-bool conversion (of the TentativeParsingResult enum).
...
This was the motivation of the following changes:
-'TentativeParsingResult' enum is replaced by a 'TPResult' class that basically encapsulates the enum.
-TPR_true, TPR_false, TPR_ambiguous, and TPR_error enum constants are replaced by TPResult::True(), TPResult::False(), etc. calls that return a TPResult object.
-Also fixed the subtle bug in Parser::isCXXFunctionDeclarator (caught by the above changes as a compilation error).
llvm-svn: 57125
2008-10-05 18:52:21 +00:00
Argyrios Kyrtzidis
bc28fefcde
Disambiguate between a declaration or an expression, in the 'for-init-statement' part of a 'for' statement.
...
llvm-svn: 57112
2008-10-05 15:50:46 +00:00
Argyrios Kyrtzidis
2534620b4e
Fix Parser::isCXXConditionDeclaration to properly resolve declarations.
...
llvm-svn: 57111
2008-10-05 15:19:49 +00:00
Argyrios Kyrtzidis
71f3e19df0
Disambiguate between a declaration or expression for the 'condition' part of a if/switch/while/for statement.
...
llvm-svn: 57109
2008-10-05 15:03:47 +00:00
Argyrios Kyrtzidis
7b87f27438
Consider GNU attributes when doing ambiguity resolution.
...
llvm-svn: 57108
2008-10-05 14:27:18 +00:00
Argyrios Kyrtzidis
2c7137d8d1
Resolve ambiguous C++ statements (C++ 6.8p1).
...
'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
2008-10-05 00:06:24 +00:00
Douglas Gregor
aa1e21dcbd
Give string literals const element typesin C++, and cope with the deprecated C++ conversion from a string literal to a pointer-to-non-const-character
...
llvm-svn: 56137
2008-09-12 00:47:35 +00:00
Argyrios Kyrtzidis
176edb5490
Do implicit conversion to bool for the condition in a do-while statement.
...
llvm-svn: 56096
2008-09-11 05:16:22 +00:00
Argyrios Kyrtzidis
fea38016a9
Fix do-while scoping in C++.
...
llvm-svn: 56095
2008-09-11 04:46:46 +00:00
Argyrios Kyrtzidis
996677e12d
In the 'condition.cpp' test case, make sure that condition declarations are local to the statement.
...
llvm-svn: 56077
2008-09-10 23:34:50 +00:00
Argyrios Kyrtzidis
7620ee4550
Implement Sema support for the 'condition' part of C++ selection-statements and iteration-statements (if/switch/while/for).
...
llvm-svn: 56044
2008-09-10 02:17:11 +00:00
Anders Carlsson
d059d5bba0
Add carbon.cpp and cocoa.mm tests
...
llvm-svn: 55262
2008-08-23 22:21:00 +00:00
Anders Carlsson
4f177f803a
treat bool literals as constatnt expressions.
...
llvm-svn: 55255
2008-08-23 21:12:35 +00:00
Argyrios Kyrtzidis
0116530ba2
Add a null pointer test in the type-convert-construct.cpp tests.
...
llvm-svn: 55247
2008-08-23 19:24:45 +00:00
Argyrios Kyrtzidis
3d0f51d703
Move the rest of the Sema C++ tests into the SemaCXX test directory.
...
llvm-svn: 55178
2008-08-22 15:43:49 +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
Anders Carlsson
41e0881b34
Initial sema support for C++ static initializers.
...
llvm-svn: 55166
2008-08-22 05:00:02 +00:00
Argyrios Kyrtzidis
00441dfcd4
Type::isIntegerType() returns true for types between Bool and LongLong.
...
Put WChar between them to make it integer type.
llvm-svn: 54882
2008-08-17 13:24:01 +00:00
Argyrios Kyrtzidis
3014572ea2
Move the C++ Sema tests into a separate SemaCXX directory.
...
llvm-svn: 54853
2008-08-16 20:53:59 +00:00