forked from qt-creator/qt-creator
C++: fix ResolveExpression for string literals
ResolveExpression now correctly handles wide and UTF-n string literals. Change-Id: Ide2373ffdc4c9e1e4b53236a8e2782653d15e687 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
@@ -386,9 +386,25 @@ bool ResolveExpression::visit(NestedExpressionAST *ast)
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ResolveExpression::visit(StringLiteralAST *)
|
||||
bool ResolveExpression::visit(StringLiteralAST *ast)
|
||||
{
|
||||
FullySpecifiedType charTy = control()->integerType(IntegerType::Char);
|
||||
const Token &tk = tokenAt(ast->literal_token);
|
||||
int intId;
|
||||
switch (tk.kind()) {
|
||||
case T_WIDE_STRING_LITERAL:
|
||||
intId = IntegerType::WideChar;
|
||||
break;
|
||||
case T_UTF16_STRING_LITERAL:
|
||||
intId = IntegerType::Char16;
|
||||
break;
|
||||
case T_UTF32_STRING_LITERAL:
|
||||
intId = IntegerType::Char32;
|
||||
break;
|
||||
default:
|
||||
intId = IntegerType::Char;
|
||||
break;
|
||||
}
|
||||
FullySpecifiedType charTy = control()->integerType(intId);
|
||||
charTy.setConst(true);
|
||||
FullySpecifiedType ty(control()->pointerType(charTy));
|
||||
addResult(ty, _scope);
|
||||
|
||||
Reference in New Issue
Block a user