Give CXXBoolLiteralExpr a type (all expressions need a valid type).

This fixes the following:

******************** TEST 'Parser/cxx-bool.cpp' FAILED! ********************
Command:
clang -fsyntax-only Parser/cxx-bool.cpp
Output:
SemaExpr.cpp:731: failed assertion `!t.isNull() && "DefaultFunctionArrayConversion - missing type"'
Output/cxx-bool.cpp.out.script: line 1: 22697 Abort trap              clang -fsyntax-only Parser/cxx-bool.cpp

llvm-svn: 41401
This commit is contained in:
Steve Naroff 2007-08-25 14:02:58 +00:00
parent a5235173bc
commit aac9415bfb
2 changed files with 4 additions and 3 deletions

View File

@ -13,6 +13,7 @@
#include "Sema.h" #include "Sema.h"
#include "clang/AST/ExprCXX.h" #include "clang/AST/ExprCXX.h"
#include "clang/AST/ASTContext.h"
using namespace clang; using namespace clang;
/// ParseCXXCasts - Parse {dynamic,static,reinterpret,const}_cast's. /// ParseCXXCasts - Parse {dynamic,static,reinterpret,const}_cast's.
@ -40,5 +41,5 @@ Action::ExprResult
Sema::ParseCXXBoolLiteral(SourceLocation OpLoc, tok::TokenKind Kind) { Sema::ParseCXXBoolLiteral(SourceLocation OpLoc, tok::TokenKind Kind) {
assert((Kind != tok::kw_true || Kind != tok::kw_false) && assert((Kind != tok::kw_true || Kind != tok::kw_false) &&
"Unknown C++ Boolean value!"); "Unknown C++ Boolean value!");
return new CXXBoolLiteralExpr(Kind == tok::kw_true, OpLoc); return new CXXBoolLiteralExpr(Kind == tok::kw_true, Context.BoolTy, OpLoc);
} }

View File

@ -78,8 +78,8 @@ namespace clang {
bool Value; bool Value;
SourceLocation Loc; SourceLocation Loc;
public: public:
CXXBoolLiteralExpr(bool val, SourceLocation l) : CXXBoolLiteralExpr(bool val, QualType Ty, SourceLocation l) :
Expr(CXXBoolLiteralExprClass, QualType()), Value(val), Loc(l) {} Expr(CXXBoolLiteralExprClass, Ty), Value(val), Loc(l) {}
bool getValue() const { return Value; } bool getValue() const { return Value; }