diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 08d51889459..543e0d4deb8 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -179,6 +179,9 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case declaration_start: switch (kind) { + case T_CLASS: + case T_STRUCT: turnInto(class_start); continue; + case T_ENUM: turnInto(enum_start); continue; case T_RBRACE: leave(true); continue; case T_SEMICOLON: leave(true); break; case T_EQUAL: enter(assign_open_or_initializer); break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 0704fbc8af5..8528d8e4339 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -127,6 +127,7 @@ private Q_SLOTS: void functionDefaultArgument(); void attributeInAccessSpecifier(); void braceReturn(); + void staticVarDeclWithTypeDecl(); }; struct Line { @@ -2111,6 +2112,43 @@ void tst_CodeFormatter::braceReturn() checkIndent(data); } +void tst_CodeFormatter::staticVarDeclWithTypeDecl() +{ + QList data; + data << Line("static class: public Foo {") + << Line("public:") + << Line(" int bar();") + << Line("} mooze;") + << Line("") + << Line("static enum Col {") + << Line(" red,") + << Line(" yellow,") + << Line(" green") + << Line("} Loc;") + << Line("") + << Line("static enum {") + << Line(" red,") + << Line(" yellow,") + << Line(" green") + << Line("} Loc;") + << Line("") + << Line("enum class Col {") + << Line(" red,") + << Line(" yellow,") + << Line(" green") + << Line("};") + << Line("") + << Line("static enum class Col") + << Line("{") + << Line(" red,") + << Line(" yellow,") + << Line(" green") + << Line("} Loc;") + << Line("") + ; + checkIndent(data); +} + QTEST_MAIN(tst_CodeFormatter) #include "tst_codeformatter.moc"