forked from qt-creator/qt-creator
CppEditor: Use trailing return type when moving function definition
... if the original definition also used a trailing return type. Task-number: QTCREATORBUG-27132 Change-Id: Iaeeeac08601f1d931aabe12be9f89ca0240d97a2 Reviewed-by: Christian Stenger <christian.stenger@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -86,6 +86,7 @@ Overview::Overview()
|
||||
showTemplateParameters(false),
|
||||
showEnclosingTemplate(false),
|
||||
includeWhiteSpaceInOperatorName(true),
|
||||
trailingReturnType(false),
|
||||
markedArgument(0),
|
||||
markedArgumentBegin(0),
|
||||
markedArgumentEnd(0)
|
||||
|
@@ -69,6 +69,7 @@ public:
|
||||
bool showTemplateParameters: 1;
|
||||
bool showEnclosingTemplate: 1;
|
||||
bool includeWhiteSpaceInOperatorName: 1; /// "operator =()" vs "operator=()"
|
||||
bool trailingReturnType: 1;
|
||||
|
||||
int markedArgument;
|
||||
int markedArgumentBegin;
|
||||
|
@@ -435,13 +435,19 @@ void TypePrettyPrinter::visit(Function *type)
|
||||
retAndArgOverview.showTemplateParameters = true;
|
||||
|
||||
if (_overview->showReturnTypes) {
|
||||
if (_overview->trailingReturnType) {
|
||||
_text.prepend("auto ");
|
||||
} else {
|
||||
const QString returnType = retAndArgOverview.prettyType(type->returnType());
|
||||
if (!returnType.isEmpty()) {
|
||||
if (!endsWithPtrOrRef(returnType) || !(_overview->starBindFlags & Overview::BindToIdentifier))
|
||||
if (!endsWithPtrOrRef(returnType)
|
||||
|| !(_overview->starBindFlags & Overview::BindToIdentifier)) {
|
||||
_text.prepend(QLatin1Char(' '));
|
||||
}
|
||||
_text.prepend(returnType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (_overview->showEnclosingTemplate) {
|
||||
if (Template *templ = type->enclosingTemplate()) {
|
||||
@@ -529,6 +535,12 @@ void TypePrettyPrinter::visit(Function *type)
|
||||
_text += QLatin1String(spec->chars());
|
||||
}
|
||||
}
|
||||
|
||||
if (_overview->showReturnTypes && _overview->trailingReturnType) {
|
||||
const QString returnType = retAndArgOverview.prettyType(type->returnType());
|
||||
if (!returnType.isEmpty())
|
||||
_text.append(" -> ").append(returnType);
|
||||
}
|
||||
}
|
||||
|
||||
void TypePrettyPrinter::appendSpace()
|
||||
|
@@ -6137,7 +6137,7 @@ struct Derived : public Base {
|
||||
original = "#include \"file.h\"\n";
|
||||
expected = R"DELIM(#include "file.h"
|
||||
|
||||
void Derived::func() const &&noexcept {}
|
||||
auto Derived::func() const &&noexcept -> void {}
|
||||
)DELIM";
|
||||
testDocuments << CppTestDocument::create("file.cpp", original, expected);
|
||||
|
||||
|
@@ -6234,6 +6234,13 @@ QString definitionSignature(const CppQuickFixInterface *assist,
|
||||
oo.showArgumentNames = true;
|
||||
oo.showEnclosingTemplate = true;
|
||||
oo.showTemplateParameters = true;
|
||||
oo.trailingReturnType = functionDefinitionAST->declarator
|
||||
&& functionDefinitionAST->declarator->postfix_declarator_list
|
||||
&& functionDefinitionAST->declarator->postfix_declarator_list->value
|
||||
&& functionDefinitionAST->declarator->postfix_declarator_list
|
||||
->value->asFunctionDeclarator()
|
||||
&& functionDefinitionAST->declarator->postfix_declarator_list
|
||||
->value->asFunctionDeclarator()->trailing_return_type;
|
||||
const Name *name = func->name();
|
||||
if (name && nameIncludesOperatorName(name)) {
|
||||
CoreDeclaratorAST *coreDeclarator = functionDefinitionAST->declarator->core_declarator;
|
||||
|
Reference in New Issue
Block a user