diff --git a/src/plugins/cppeditor/cppcodeformatter.cpp b/src/plugins/cppeditor/cppcodeformatter.cpp index 6b30e78fa6c..d09fa37d455 100644 --- a/src/plugins/cppeditor/cppcodeformatter.cpp +++ b/src/plugins/cppeditor/cppcodeformatter.cpp @@ -204,7 +204,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case T_IDENTIFIER: // '&', id, 'this' are allowed both in the capture list and subscribtion case T_AMPER: case T_THIS: break; - default: leave(); leave(); tryExpression(m_currentState.at(m_currentState.size() - 1).type == declaration_start); break; + default: tryExpression(m_currentState.at(m_currentState.size() - 2).type == declaration_start); break; // any other symbol allowed only in subscribtion operator } break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index ce57e939ee5..344f6f1bef4 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -107,6 +107,7 @@ private Q_SLOTS: void shiftWithinInitializer(); void lambdaWithReturnType(); void structuredBinding(); + void subscriptOperatorInFunctionCall(); }; struct Line { @@ -2199,6 +2200,19 @@ void tst_CodeFormatter::structuredBinding() checkIndent(data); } +void tst_CodeFormatter::subscriptOperatorInFunctionCall() +{ + QList data; + data << Line("int main() {") + << Line(" func(array[0],") + << Line(" ~ 0);") + << Line(" func(array[i],") + << Line(" ~ i);") + << Line("}") + ; + checkIndent(data); +} + QTEST_GUILESS_MAIN(tst_CodeFormatter) #include "tst_codeformatter.moc"