diff options
Diffstat (limited to 'src/plugins/cpptools/cpptoolsreuse.cpp')
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index b2d9c17d16..b71ceeecac 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -50,7 +50,7 @@ static void moveCursorToStartOrEndOfIdentifier(QTextCursor *tc, return; QChar ch = doc->characterAt(tc->position() - posDiff); - while (ch.isLetterOrNumber() || ch == QLatin1Char('_')) { + while (isValidIdentifierChar(ch)) { tc->movePosition(op); ch = doc->characterAt(tc->position() - posDiff); } @@ -111,16 +111,31 @@ bool isOwnershipRAIIType(CPlusPlus::Symbol *symbol, const LookupContext &context return false; } +bool isValidAsciiIdentifierChar(const QChar &ch) +{ + return ch.isLetterOrNumber() || ch == QLatin1Char(' '); +} + +bool isValidFirstIdentifierChar(const QChar &ch) +{ + return ch.isLetter() || ch == QLatin1Char('_') || ch.isHighSurrogate() || ch.isLowSurrogate(); +} + +bool isValidIdentifierChar(const QChar &ch) +{ + return isValidFirstIdentifierChar(ch) || ch.isNumber(); +} + bool isValidIdentifier(const QString &s) { const int length = s.length(); for (int i = 0; i < length; ++i) { const QChar &c = s.at(i); if (i == 0) { - if (!c.isLetter() && c != QLatin1Char('_')) + if (!isValidFirstIdentifierChar(c)) return false; } else { - if (!c.isLetterOrNumber() && c != QLatin1Char('_')) + if (!isValidIdentifierChar(c)) return false; } } |