Changed string-wrapping quickfix to handle @"strings".

This commit is contained in:
Erik Verbruggen
2009-12-29 18:32:05 +01:00
parent eb1baa9e2e
commit c50172e201
2 changed files with 18 additions and 2 deletions

View File

@@ -759,7 +759,7 @@ class WrapStringLiteral: public QuickFixOperation
{
public:
WrapStringLiteral()
: stringLiteral(0)
: stringLiteral(0), isObjCStringLiteral(false)
{}
virtual QString description() const
@@ -778,6 +778,8 @@ public:
if (!stringLiteral)
return -1;
isObjCStringLiteral = charAt(startOf(stringLiteral)) == QLatin1Char('@');
// check if it is already wrapped in QLatin1String or -Literal
if (index-2 < 0)
return index;
@@ -805,12 +807,20 @@ public:
virtual void createChangeSet()
{
insert(startOf(stringLiteral), "QLatin1String(");
const int startPos = startOf(stringLiteral);
const QLatin1String replacement("QLatin1String(");
if (isObjCStringLiteral)
replace(startPos, startPos + 1, replacement);
else
insert(startPos, replacement);
insert(endOf(stringLiteral), ")");
}
private:
StringLiteralAST *stringLiteral;
bool isObjCStringLiteral;
};
} // end of anonymous namespace
@@ -1040,6 +1050,11 @@ QString QuickFixOperation::textOf(const AST *ast) const
return textOf(startOf(ast), endOf(ast));
}
QChar QuickFixOperation::charAt(int offset) const
{
return textOf(offset, offset + 1).at(0);
}
void QuickFixOperation::apply()
{
Range range;