From 86d5df063cda54c6eb2e32fb6496a23c8ef0de81 Mon Sep 17 00:00:00 2001 From: Christian Kamm <christian.d.kamm@nokia.com> Date: Thu, 19 May 2011 13:06:49 +0200 Subject: [PATCH] C++ indenter: Fix extra specifier in return type of func decl. Like struct Foo bar() { } Change-Id: I946937c23d1660909757952a5a3bd400c4781826 Reviewed-on: http://codereview.qt.nokia.com/13 Reviewed-by: Erik Verbruggen <erik.verbruggen@nokia.com> --- src/plugins/cpptools/cppcodeformatter.cpp | 2 ++ .../cplusplus/codeformatter/tst_codeformatter.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/plugins/cpptools/cppcodeformatter.cpp b/src/plugins/cpptools/cppcodeformatter.cpp index 1eb049fe5b0..33aa6aedefd 100644 --- a/src/plugins/cpptools/cppcodeformatter.cpp +++ b/src/plugins/cpptools/cppcodeformatter.cpp @@ -110,6 +110,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case class_start: switch (kind) { case T_SEMICOLON: leave(); break; + case T_LPAREN: turnInto(declaration_start); continue; // "struct Foo bar() {" case T_LBRACE: enter(class_open); break; } break; @@ -123,6 +124,7 @@ void CodeFormatter::recalculateStateAfter(const QTextBlock &block) case enum_start: switch (kind) { case T_SEMICOLON: leave(); break; + case T_LPAREN: turnInto(declaration_start); continue; // "enum Foo bar() {" case T_LBRACE: enter(enum_open); break; } break; diff --git a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp index 17bc24be036..d0c3ee811a0 100644 --- a/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp +++ b/tests/auto/cplusplus/codeformatter/tst_codeformatter.cpp @@ -91,6 +91,7 @@ private Q_SLOTS: void whitesmithsStyleSwitch(); void indentToNextToken(); void labels(); + void functionsWithExtraSpecifier(); }; struct Line { @@ -1178,6 +1179,19 @@ void tst_CodeFormatter::labels() checkIndent(data); } +void tst_CodeFormatter::functionsWithExtraSpecifier() +{ + QList<Line> data; + data << Line("extern void foo() {}") + << Line("struct Foo bar() {}") + << Line("enum Foo bar() {}") + << Line("namespace foo {") + << Line("}") + << Line("int a;") + ; + checkIndent(data); +} + QTEST_APPLESS_MAIN(tst_CodeFormatter) #include "tst_codeformatter.moc" -- GitLab