From 8082df491a5bb6673b611691f5d4d9073a741164 Mon Sep 17 00:00:00 2001 From: Leander Schulten Date: Mon, 18 Jan 2021 15:26:11 +0100 Subject: [PATCH] CppEditor: Only generate valid identifiers in QuickFixes Change-Id: Idcb3495f04627610eaf530dcb5d3b58429eda616 Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppquickfixes.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plugins/cppeditor/cppquickfixes.cpp b/src/plugins/cppeditor/cppquickfixes.cpp index 40d3fdd55cc..2d52596c5ee 100644 --- a/src/plugins/cppeditor/cppquickfixes.cpp +++ b/src/plugins/cppeditor/cppquickfixes.cpp @@ -617,6 +617,9 @@ bool nameIncludesOperatorName(const Name *name) QString memberBaseName(const QString &name) { + const auto validName = [](const QString &name) { + return !name.isEmpty() && !name.at(0).isDigit(); + }; QString baseName = name; CppQuickFixSettings *settings = CppQuickFixProjectsSettings::getQuickFixSettings( @@ -626,7 +629,7 @@ QString memberBaseName(const QString &name) const QString postfix = nameTemplate.mid(nameTemplate.lastIndexOf('>') + 1); if (name.startsWith(prefix) && name.endsWith(postfix)) { const QString base = name.mid(prefix.length(), name.length() - postfix.length()); - if (!base.isEmpty()) + if (validName(base)) return base; } @@ -635,7 +638,7 @@ QString memberBaseName(const QString &name) baseName.remove(0, 1); while (baseName.endsWith(QLatin1Char('_'))) baseName.chop(1); - if (baseName != name) + if (baseName != name && validName(baseName)) return baseName; // If no leading/trailing "_": remove "m_" and "m" prefix @@ -647,7 +650,7 @@ QString memberBaseName(const QString &name) baseName[0] = baseName.at(0).toLower(); } - return baseName; + return validName(baseName) ? baseName : name; } // Returns a non-null value if and only if the cursor is on the name of a (proper) class