forked from qt-creator/qt-creator
Return the right type for the literal.
This commit is contained in:
@@ -343,9 +343,34 @@ bool ResolveExpression::visit(SizeofExpressionAST *)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ResolveExpression::visit(NumericLiteralAST *)
|
||||
bool ResolveExpression::visit(NumericLiteralAST *ast)
|
||||
{
|
||||
FullySpecifiedType ty(control()->integerType(IntegerType::Int));
|
||||
Type *type = 0;
|
||||
NumericLiteral *literal = numericLiteral(ast->literal_token);
|
||||
|
||||
if (literal->isChar())
|
||||
type = control()->integerType(IntegerType::Char);
|
||||
else if (literal->isWideChar())
|
||||
type = control()->integerType(IntegerType::WideChar);
|
||||
else if (literal->isInt())
|
||||
type = control()->integerType(IntegerType::Int);
|
||||
else if (literal->isLong())
|
||||
type = control()->integerType(IntegerType::Long);
|
||||
else if (literal->isLongLong())
|
||||
type = control()->integerType(IntegerType::LongLong);
|
||||
else if (literal->isFloat())
|
||||
type = control()->floatType(FloatType::Float);
|
||||
else if (literal->isDouble())
|
||||
type = control()->floatType(FloatType::Double);
|
||||
else if (literal->isLongDouble())
|
||||
type = control()->floatType(FloatType::LongDouble);
|
||||
else
|
||||
type = control()->integerType(IntegerType::Int);
|
||||
|
||||
FullySpecifiedType ty(type);
|
||||
if (literal->isUnsigned())
|
||||
ty.setUnsigned(true);
|
||||
|
||||
addResult(ty);
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user