From f99094a0b837e46c38ce0c7b93388ebb7f45d216 Mon Sep 17 00:00:00 2001 From: GPery Date: Thu, 17 Mar 2022 13:20:07 +0200 Subject: [PATCH] CppEditor: Fix indentation for structured binding Structured bindings were parsed as lambdas instead Fixes: QTCREATORBUG-27183 Change-Id: I3c88dc1012e55edfe417504c17f6138e3356651c Reviewed-by: Christian Stenger Reviewed-by: Qt CI Bot Reviewed-by: Christian Kandeler --- src/plugins/cppeditor/cppcodeformatter.cpp | 1 + .../cplusplus/codeformatter/tst_codeformatter.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/plugins/cppeditor/cppcodeformatter.cpp b/src/plugins/cppeditor/cppcodeformatter.cpp index 00884aba141..6df0a44659b 100644 --- a/src/plugins/cppeditor/cppcodeformatter.cpp +++ b/src/plugins/cppeditor/cppcodeformatter.cpp @@ -172,6 +172,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case T_COLON: enter(member_init_open); enter(member_init_expected); break; case T_OPERATOR: enter(operator_declaration); break; case T_GREATER_GREATER: break; + case T_LBRACKET: break; default: tryExpression(true); break; } break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index db0c7aeb1c1..d98dc3e21e2 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -128,6 +128,7 @@ private Q_SLOTS: void initializerWithinFunctionArg(); void shiftWithinInitializer(); void lambdaWithReturnType(); + void structuredBinding(); }; struct Line { @@ -2209,6 +2210,17 @@ void tst_CodeFormatter::lambdaWithReturnType() checkIndent(data); } +void tst_CodeFormatter::structuredBinding() +{ + QList data; + data << Line("int main() {") + << Line(" auto [v1, v2] = tuple_func();") + << Line(" return 0;") + << Line("}") + ; + checkIndent(data); +} + QTEST_MAIN(tst_CodeFormatter) #include "tst_codeformatter.moc"