diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 6925b711c82..d98b0022ec0 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -199,6 +199,11 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) turnInto(substatement_open); } break; + case T_ARROW: // Trailing return type? + if (m_currentState.at(m_currentState.size() - 2).type == declaration_start) { + leave(); + break; + } default: tryExpression(); break; } break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 225ef184709..0657e587866 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -1287,6 +1287,7 @@ void tst_CodeFormatter::functionReturnType() << Line("A::B::foo() {}") << Line("std::map> indent() {}") << Line("std::map > indent() {}") + << Line("auto indent() -> std::map>") << Line("") ; checkIndent(data);