diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 3a7462be9b6b355b54ec59ca0820b90a24059408..3c13d10f58983d6689d1b2ee6ee8ae660d951153 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -317,12 +317,14 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) switch (kind) { case T_SEMICOLON: turnInto(for_statement_condition); break; case T_LPAREN: enter(condition_paren_open); break; + case T_RPAREN: turnInto(for_statement_expression); continue; } break; case for_statement_condition: switch (kind) { case T_SEMICOLON: turnInto(for_statement_expression); break; case T_LPAREN: enter(condition_paren_open); break; + case T_RPAREN: turnInto(for_statement_expression); continue; } break; case for_statement_expression: diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 155a28810a4eaf6b972315145d335b31e498f7fe..0b240fa107c848ea08ade7ac06894d057c1136fd 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -33,6 +33,7 @@ private Q_SLOTS: void classAccess(); void ternary(); void objcAtDeclarations(); + void objcCallAndFor(); void braceList(); void bug1(); void bug2(); @@ -666,6 +667,24 @@ void tst_CodeFormatter::objcAtDeclarations() checkIndent(data); } +void tst_CodeFormatter::objcCallAndFor() +{ + QList<Line> data; + data << Line("void foo() {") + << Line(" NSArray *windows = [NSApp windows];") + << Line(" for (NSWindow *window in windows) {") + << Line(" NSArray *drawers = [window drawers];") + << Line(" for (NSDrawer *drawer in drawers) {") + << Line(" NSArray *views = [[drawer contentView] subviews];") + << Line(" int x;") + << Line(" }") + << Line(" }") + << Line("}") + << Line("int y;") + ; + checkIndent(data); +} + void tst_CodeFormatter::switch1() { QList<Line> data;